Задача: Из строки вида DEADFACE получить бинарные данные, пригодные для записи в файл.
Решение: Решений тут может быть несколько.
Один вариант - создать целочисленную переменную и использовать модуль struct и его метод pack. Но тут есть нюанс. Скажем из строки вида FE при использовании struct.pack получится бинарные данные дополненные нулями в зависимости от формата (00 00 00 FE). Меня это не устраивало.
Поэтому я использовал второй вариант: модуль binascii и его метод unhexlify.
Но лучше я приведу код:
Раз:
И два:
И три:
Решение: Решений тут может быть несколько.
Один вариант - создать целочисленную переменную и использовать модуль struct и его метод pack. Но тут есть нюанс. Скажем из строки вида FE при использовании struct.pack получится бинарные данные дополненные нулями в зависимости от формата (00 00 00 FE). Меня это не устраивало.
Поэтому я использовал второй вариант: модуль binascii и его метод unhexlify.
Но лучше я приведу код:
Раз:
import struct # 1 hex_str = "DEADFACE" # create int a = int(hex_str, 16) b = st.pack("L", a) # b == '\xce\xfa\xad\xde\x00\x00\x00\x00'
И два:
import binascii as b2a hex_str = "DEADFACE" res = b2a.unhexlify(hex_str) # res =='\xde\xad\xfa\xce'
И три:
import binascii as b2a a = 8037 b = hex(a) # b == '\x1F65' b = b[2:].replace("L", "") # b == '1F65' res = b2a.unhexlify(b) # res =='\x1f\x65'
Комментариев нет:
Отправить комментарий