#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)))
В последней строке они выводятся как шестнадцатеричные, но это не целые числа, это строки. И вы пытаетесь использовать маленький конечный язык в своем коде, но ожидаемый результат-большой.