Преобразуйте значение в 32-разрядные значения

#python

Вопрос:

У меня есть виджет таблицы, и пользователь указывает число в таблице, поэтому, когда я получу это значение, я хочу преобразовать 32-битное шестнадцатеричное значение.

Например, пользователь вводит число 10, мне нужно преобразовать это число

Во-первых, 0x000A (он должен быть шестнадцатеричным)

И разделиться вот так: myList = [0x0,0x0,0x0,0xA]

Я попробовал с помощью команды ниже

 myNum = 10 value = '0x{0:04X}'.format(myNum) print(value) print(list(struct.pack('lt;H',value)))  

Я получаю struct.error: required argument is not an integer ‘0x{0:04X}’.формат(myNum) возвращает строку значения, поэтому я не смог правильно разделить это значение.

Я ожидаю, что это значение [0x0,0x0,0x0,0xA]

Как я могу это сделать ?

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

1. Я ожидаю, что массив списка будет выглядеть следующим образом : [0x0,0x0,0x0,0xA] . Я сказал в своей теме

2. что вы подразумеваете под шестнадцатеричным значением ? Вы понимаете [0x0,0x0,0x0,0xA] , что это список с 4 объектами int, он точно такой же, как [0, 0, 0, 10]

3. не соответствует, мне нужно преобразовать 10 в [0,0,0,10] или [0x0, 0x0,0x0,0xA] значение, они одинаковые. Но мой вопрос в том, как преобразовать.

4. Я не знаю, почему вы используете "lt;H" в качестве строки формата небольшую конечную строку без знака, похоже , вам нужно: list(struct.pack('gt;I', num)) , т. Е. 32-разрядный int с большим конечным значением без знака, где num == 10

5. Или, не используя struct , просто list(num.to_bytes(4, 'big')) Вы постоянно упоминаете «гекс», но совершенно неясно, чего вы ожидаете или какое отношение ваш результат имеет к «гекс». Вы просто хотите работать num value с (то, что вы ранее называли, myHex похоже, ни с чем не связано, потому что это просто строковое представление шестнадцатеричного числа

Ответ №1:

Вы не можете сделать стойку.пакет на веревочке. Он принимает целые числа (как описано в описании ошибки) и возвращает байтовую строку, которую вы можете превратить в список.

 import struct  myNum = 10 myHex = '0x{0:04X}'.format(myNum) print(myHex) mylist = list(struct.pack('gt;I',myNum)) print(mylist) print(list(map(hex, mylist)))  

В последней строке они выводятся как шестнадцатеричные, но это не целые числа, это строки. И вы пытаетесь использовать маленький конечный язык в своем коде, но ожидаемый результат-большой.