0
我想從十六進制值的長字符串中讀取幾行十六進制值,然後將它們轉換成小端,然後將其轉換爲十進制。從小字節16進制值的長字符串中打印十進制值
這裏是什麼,我試圖做一個例子:
從步驟1至步驟2我的代碼後續的線將執行該步驟:
""" Convert to Hexadecimal """
def dump(s):
import types
if type(s) == types.StringType:
return dumpString(s)
elif type(s) == types.UnicodeType:
return dumpUnicodeString(s)
FILTER = ''.join([(len(repr(chr(x))) == 3) and chr(x) or '.' for x in range(256)])
def dumpString(src, length=16):
result = []
for i in xrange(0, len(src), length):
chars = src[i:i+length]
hex = ' '.join(["%02x" % ord(x) for x in chars])
printable = ''.join(["%s" % ((ord(x) <= 127 and FILTER[ord(x)]) or '.') for x in chars])
result.append(hex)
return ''.join(result)
""" _____________________________________________ """
t = dump(TEST.encode("utf8", "replace")) #TEST is a string of characters
這或多或少是我第一跳從步驟1到步驟2.現在從步驟2到步驟3我正在嘗試沿着一行:
newString = t[54:59]
但是我不確定下列方法在使用不同長度的字符串時是否能正常工作。它可能適用於當前字符串。所以,現在我有我想要關注的字節我不確定如何將這些位轉換成小端,以便將其轉換爲十進制。 Python是否內置了可以幫助我轉換的庫?或者使用一個字符串修飾符?
這似乎但是工作使用 '9a04' 時,這是我的結果:'十六進制(struct.unpack( '我',INT( '9a04',16)))[0])'='0x49a0000'而不是'049a' – JeanP
呃...是的...返回的數字仍然是十六進制。你可以試試:hex(struct.unpack(' I',int('ff',16)))[0])[2:] .zfill(8)[:4 ] – ohe
@JeanP,解決方案編輯 – ohe