在Python中的十六进制字符串变量到十六进制值转换

时间:2013-06-20 06:36:32

标签: python string hex

我有一个变量调用hex_string。值可能是'01234567'。现在我想从这个变量得到一个十六进制值,它是0x01234567而不是字符串类型。此变量的值可能会更改。所以我需要一种通用的转换方法。

5 个答案:

答案 0 :(得分:8)

我认为你可能会混淆数字和他们的陈述。 0x0123456719088743完全相同。 "0x01234567""19088743"不是(请注意引号)。

要从一串十六进制字符转换为整数,请使用int(value, 16)

要从整数转换为以十六进制表示该数字的字符串,请使用hex(value)

>>> a = 0x01234567
>>> b = 19088743
>>> a == b
True
>>> hex(b)
'0x1234567'
>>> int('01234567', 16)
19088743
>>>

答案 1 :(得分:4)

>>> int('01234567', 16)
19088743

这与:

相同
>>> 0x01234567
19088743

答案 2 :(得分:0)

>>> a
'01234567'
>>> hex(int(a))
'0x12d687'
>>> 

希望有所帮助......

答案 3 :(得分: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

也在尝试     print hex_string_to_hex_value(" 01234567")

结果

0x1234567L

注意:L表示该值属于" long"据我所知,根据python网站上的文档(它们确实显示你可以附加L值)。 https://docs.python.org/2/library/functions.html#hex

>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
>>> hex(1L)
'0x1L'

答案 4 :(得分:0)

十六进制值为<type 'long'>,十六进制字符串为<type 'str'>。如果将类型从str更改为long,那么对十六进制值的所有操作都是可行的。

long(hex_string,16)