我在字符串中有一个十六进制值
h = '00112233aabbccddee'
Run Code Online (Sandbox Code Playgroud)
我知道我可以将其转换为二进制:
h = bin(int(h, 16))[2:]
Run Code Online (Sandbox Code Playgroud)
然而,这失去了领先的0.反正有没有失去0的转换呢?或者最好的方法是在转换之前计算前导0的数量,然后再添加它.
Don*_*ner 19
我不认为默认情况下有一种方法可以保留这些前导零.
每个十六进制数字转换为4个二进制数字,因此新字符串的长度应该是原始字符串的4倍.
h_size = len(h) * 4
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用.zfill
填充零所需的大小:
h = ( bin(int(h, 16))[2:] ).zfill(h_size)
Run Code Online (Sandbox Code Playgroud)
这在Python中实际上非常简单,因为它对整数的大小没有任何限制.只需将前缀添加'1'
到十六进制字符串,然后'1'
从输出中删除相应的字符串.
>>> h = '00112233aabbccddee'
>>> bin(int(h, 16))[2:] # old way
'1000100100010001100111010101010111011110011001101110111101110'
>>> bin(int('1'+h, 16))[3:] # new way
'000000000001000100100010001100111010101010111011110011001101110111101110'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26006 次 |
最近记录: |