def str_to_int(s):
i = int(s, 16)
if i >= 2**23:
i -= 2**24
return i
def int_to_str(i):
return '%06x'%((i+2**24)%2**24)
测试结果:
In [36]: str_to_int('012345')
Out[36]: 74565
In [37]: str_to_int('fedcba')
Out[37]: -74566
In [38]: int_to_str(74565)
Out[38]: '012345'
In [39]: int_to_str(-74566)
Out[39]: 'fedcba'
测试结果:
引用:Hex string to signed int in Python 3.2?
(编辑:我的疏忽。请参阅Rob's answer以正确覆盖负号)
如果只想将十六进制字符串转换为int,请执行以下操作:
相反,可以使用
hex()
函数来完成。从帮助页:内置函数十六进制模块内置帮助:
如果数据流中缺少“x”,则删除或添加它应该很简单。 下面是一个确保填充到6个字符(表示3个字节=24位)的示例:
如果您以3字节(24位)的形式获取数据,则可以使用
int.to_bytes()
和int.from_bytes()
,如the Python docs中所述。这是Python3.2中的新功能。然后:
相关问题 更多 >
编程相关推荐