我有一个名为hex_string的变量。它的值可能是'01234567'。现在,我想要从这个变量中得到一个16进制值,而不是字符串类型,即0x01234567。这个变量的值可能会发生改变,因此我需要一个通用的转换方法。
我有一个名为hex_string的变量。它的值可能是'01234567'。现在,我想要从这个变量中得到一个16进制值,而不是字符串类型,即0x01234567。这个变量的值可能会发生改变,因此我需要一个通用的转换方法。
0x01234567
和19088743
是完全一样的东西。"0x01234567"
和"19088743"
不是(请注意引号)。int(value, 16)
。hex(value)
。>>> a = 0x01234567
>>> b = 19088743
>>> a == b
True
>>> hex(b)
'0x1234567'
>>> int('01234567', 16)
19088743
>>>
>>> int('01234567', 16)
19088743
这与以下内容相同:
>>> 0x01234567
19088743
int('0x01234567',16)
也可以正常工作,无需删除0x
部分。 - Ashwini Chaudhary我不知道用Python最恰当的方式来完成这个,但以下是我想到的方法。
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
>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
>>> hex(1L)
'0x1L'
>>> a
'01234567'
>>> hex(int(a))
'0x12d687'
>>>
十六进制值为<type 'long'>
,而十六进制字符串为<type 'str'>
。如果将类型从字符串更改为长整型,则可以对十六进制值执行所有操作。
long(hex_string,16)