Я пытаюсь прочитать несколько строк шестнадцатеричных значений из длинной строки шестнадцатеричных значений, а затем преобразовать их в маленький конец и затем преобразовать их в десятичные.Печать Десятичное значение из длинной строки маленьких значений конца столбца
Вот пример того, что я пытаюсь сделать:
От Шаг 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 (' I' INT ('9a04', 16))) [0]) '=' 0x49a0000', а не '049a' – JeanP
ну ... да ... возвращаемое число все еще в шестнадцатеричном формате. Вы можете попробовать: hex (struct.unpack (' I', int ('ff', 16))) [0]) [2:]. Zfill (8) [: 4 ] – ohe
@JeanP, решение отредактировано – ohe