【发布时间】:2017-01-31 14:14:37
【问题描述】:
我有四个 hex 数字的字符串,例如:
"0x00 0x01 0x13 0x00"
相当于0x00011300。如何将此十六进制值转换为整数?
【问题讨论】:
标签: python python-2.7 hex decimal string-conversion
我有四个 hex 数字的字符串,例如:
"0x00 0x01 0x13 0x00"
相当于0x00011300。如何将此十六进制值转换为整数?
【问题讨论】:
标签: python python-2.7 hex decimal string-conversion
因为你有 hex 值的字符串。您可以从字符串中删除 ' 0x' 以获取单个十六进制数字字符串。例如:
my_str = "0x00 0x01 0x13 0x00"
hex_str = my_str.replace(' 0x', '')
hex_str 持有的值将是:
'0x00011300' # `hex` string
现在您可以将hex 字符串转换为int 为:
>>> int(hex_str, 16)
70400
【讨论】:
>>> s="0x00 0x01 0x13 0x00"
>>> a=0
>>> for b in s.split():
... a = a*256 + int(b,16)
...
>>> a
70400
>>> hex(a)
'0x11300'
【讨论】:
答案在这里Convert hex string to int in Python。
没有 0x 前缀,需要显式指定基数,否则无法分辨:
x = int("deadbeef", 16)
有了前缀0x,Python可以自动区分十六进制和十进制。
print int("0xdeadbeef", 0)
3735928559
print int("10", 0)
10
(您必须将 0 指定为基数才能调用此前缀猜测行为;省略第二个参数意味着假定基数为 10。有关详细信息,请参阅 cmets。)
【讨论】: