2016-07-06 3 views
0
-структуру

Я преобразования долго или ИНТ в ByteArray, в Python с использованием структурыпитон Долго массив байтов 2 байта, используя

ба = struct.pack ('H', 12)

вывод: «\ x0c \ x00' длина 2 байта

но если я конвертировать ба = struct.pack ('H', 12345)

вывод: '90' мне нужно кодировать заколдовать для лучшего из положить ба .encode ('hex') в этом случае выход выход: 3930 и длина 4

Почему это происходит, он должен дать результат 2 байта без кодирования?

мой usecase - мне нужно преобразовать long в bytearray желаемого размера bytearray.

+0

Я действительно не понимаю, что ваше достижение. Вы хотите получить 'b '0c00" 'с вводом' 12'? – kazbeel

+0

На самом деле я хотел создать общую функцию с длиной ввода и вывести как 2 байтовый массив байтов, используя struct, если мой ввод равен 12, вывод «\ x0c \ x00» длиной 2 байта, как и ожидалось, но когда я даю ввод как 12345, который составляет <2 ** 16 - 1 (может вместить в два байта), выход равен «90», который также имеет два байта, но я ожидаю, что вывод будет «0x3039», как в случае 12 в качестве входного сигнала, Просто хотел знать, почему функция возвращает разные в случае ввода как 12345 – atulthree

ответ

0

'90' - это два байта. Первый байт равен 0x39, а второй - 0x30.

>>> hex(12345) 
'0x3039' 

TL; DR: Вы получаете правильный результат.

Смежные вопросы