Вопрос по python – Преобразование значения в 4-байтовый гекс в Python

0

Я хочу преобразовать любое значение (которое может быть отрицательным или положительным) в гекс. Мой текущий метод делает это.

Значение чтения в этом примере 4003.

workingline = stringdb.readline().split(";")
print hex(int(workingline[0]))

Это возвращает

0xfa3

Так должно быть:

0xa30f0000

(Дополнено нулями и инвертированным шестнадцатеричным) Если значение отрицательное, оно должно быть:

0xFEFFFFFF

Со значением -2.

Я предполагаю, что заполнение не помогает в этом случае.

Спасибо!

точная копияHow to get hex string from signed integer tylerl

Ваш Ответ

1   ответ
4

struct модуль:

>>> struct.pack("<I", 4003).encode('hex')
'a30f0000'

Для -2 вам потребуется выполнить другую работу:

>>> struct.pack("<I", -2 + 2**32).encode('hex')
'feffffff'

Способ сделать это для любого значения:

struct.pack("<I", (value + 2**32) % 2**32).encode('hex')
С помощью"<i" вместо"<I" делает правильные вещи без+ 2**32.
Похоже, это работает только для положительных ценностей. Знаете ли вы другой способ заставить его работать и на отрицательные значения? user1150764
Хорошо, спасибо! Я полагаю, я просто сделаю заявление IF для двух методов. :) user1150764

Похожие вопросы