簡體   English   中英

在Python中的十六進制字符串變量到十六進制值轉換

[英]Hex string variable to hex value conversion in python

我有一個變量調用hex_string。 值可能是'01234567'。 現在我想從這個變量得到一個十六進制值,它是0x01234567而不是字符串類型。 此變量的值可能會更改。 所以我需要一個通用的轉換方法。

我想你可能會混淆數字和他們的表示。 0x0123456719088743完全相同。 "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
>>> a
'01234567'
>>> hex(int(a))
'0x12d687'
>>> 

希望能幫助到你..

我不知道正確的“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

注意:根據python網站上的文檔,L表示該值屬於“long”的類別(它們確實顯示您可以附加L值)。 https://docs.python.org/2/library/functions.html#hex

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

十六進制值是<type 'long'>而十六進制字符串是<type 'str'> 如果將類型從str更改為long,則對十六進制值的所有操作都是可行的。

long(hex_string,16)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM