воскресенье, 4 сентября 2011 г.

Python tips

Задача: Из строки вида DEADFACE получить бинарные данные, пригодные для записи в файл.
Решение: Решений тут может быть несколько.
Один вариант - создать целочисленную переменную и использовать модуль 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'


Комментариев нет:

Отправить комментарий