我有一个16位十六进制值(即长度16),我想将其转换为二进制,如下所示:
n = '5851F42D00000000' # length = 16
bin_ = bin(int(n, 16))[2:]
print(len(bin_))
我到达这里63,但是我期望结果二进制文件的长度为64。我在这里做错了吗?
谢谢
答案 0 :(得分:3)
bin
不会给您前导零,因为它无法知道您想要多少个前导零。您可以使用字符串格式来获得所需的行为:
>>> n = '5851F42D00000000'
>>> '{:064b}'.format(int(n, 16))
'0101100001010001111101000010110100000000000000000000000000000000'
>>> len(_)
64
格式字符串{:064b}
用二进制格式格式化整数,前导零到长度64。
答案 1 :(得分:0)
此二进制数字前导零:
>>> f'{int(n, 16):064b}'
'0101100001010001111101000010110100000000000000000000000000000000'
bin
将返回最短的表示形式,不包括前导零:
>>> bin(int(n, 16))
'0b101100001010001111101000010110100000000000000000000000000000000'
^ there's technically a zero before that