我有一个变量调用 hex_string。该值可以是“01234567”。现在我想从这个变量中获取一个十六进制值,它是 0x01234567 而不是字符串类型。这个变量的值可能会改变。所以我需要一个通用的转换方法。
问问题
48215 次
5 回答
15
我认为您可能混淆了数字及其表示。0x01234567
并且19088743
是完全相同的东西。"0x01234567"
而"19088743"
不是(注意引号)。
要从十六进制字符串转换为整数,请使用int(value, 16)
.
要从整数转换为以十六进制表示该数字的字符串,请使用hex(value)
.
>>> a = 0x01234567
>>> b = 19088743
>>> a == b
True
>>> hex(b)
'0x1234567'
>>> int('01234567', 16)
19088743
>>>
于 2013-06-20T06:41:17.737 回答
6
>>> int('01234567', 16)
19088743
这与以下内容相同:
>>> 0x01234567
19088743
于 2013-06-20T06:37:49.453 回答
0
>>> a
'01234567'
>>> hex(int(a))
'0x12d687'
>>>
希望能帮助到你..
于 2013-06-20T06:39:22.497 回答
0
我不知道正确的“pythonic”方式来做到这一点,但这就是我想出的。
def hex_string_to_bin_string(input):
lookup = {"0" : "0000", "1" : "0001", "2" : "0010", "3" : "0011", "4" : "0100", "5" : "0101", "6" : "0110", "7" : "0111", "8" : "1000", "9" : "1001", "A" : "1010", "B" : "1011", "C" : "1100", "D" : "1101", "E" : "1110", "F" : "1111"}
result = ""
for byte in input:
result = result + lookup[byte]
return result
def hex_string_to_hex_value(input):
value = hex_string_to_bin_string(input)
highest_order = len(value) - 1
result = 0
for bit in value:
result = result + int(bit) * pow(2,highest_order)
highest_order = highest_order - 1
return hex(result)
print hex_string_to_hex_value("FF")
结果是
0xff
还尝试打印 hex_string_to_hex_value("01234567")
结果是
0x1234567L
注意: L 表示该值属于“长”类别,据我所知,根据 python 网站的文档(它们确实表明您可以附加 L 值)。 https://docs.python.org/2/library/functions.html#hex
>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
>>> hex(1L)
'0x1L'
于 2015-04-03T13:53:15.940 回答
0
十六进制值是<type 'long'>
,而十六进制字符串是<type 'str'>
。如果类型从 str 更改为 long,则对 hex 值的所有操作都是可行的。
long(hex_string,16)
于 2016-07-25T08:36:06.803 回答