У меня есть список с именем a=[0,1], и я хочу изменить его на тип a=[0x00,0x001]. Как я могу это сделать? Я пробовал таким образом
a=[0,1]
a=[0x00,0x001]
print (struct.pack('>h',a))
Но я не могу перейти на гекс
Ниже приведен еще один способ преобразования списка целых чисел в список шестнадцатеричных с использованием функции карты:
a=[0,1] print(map(hex,a)) # Output # ['0x0', '0x1']
Ниже приведен еще один способ преобразования списка целых чисел в список шестнадцатеричных
a = [0,1] b = map(hex, a) # or b = map(lambda x:hex(x), a) # output print b ['0x1', '0x2']
Использование hex (...) даст вам только наименьшее количество ведущих 0:
print( [hex(i) for i in [0,1]]) # ['0x1', '0x2']
Вы можете отформатировать (...) строку в шестнадцатеричном формате и zfill () необходимое количество нулей и добавить к ней '0x' самостоятельно:
'0x'
data = [0,1] as_hex = [ "0x" + format(e,"x").zfill(2) for e in data] print(as_hex)
Выход:
['0x00', '0x01']
Поскольку вы не можете описать желаемый результат, я могу только догадываться:
Вы хотите упаковать некоторые числа в строку?
Тогда не имеет значения, какой формат вы используете, оба должны работать, как только вы используете правильную строку формата:
a = [1, 2] b = [0x01, 0x02] struct.pack(">hh", *a) # > '\x00\x01\x00\x02' struct.pack(">hh", *b) # > '\x00\x01\x00\x02'
Это потому, что a и b равны: не имеет значения, пишете ли вы 1 и 2 или предпочитаете ли вы 0x01 соответственно 0x02. Помните, что отображаемые строки являются просто представлениями строк, содержащих специальные символы со значениями 0, 1 и 2 соответственно.
a
b
1
2
0x01
0x02
Хотите вывести свои числа в шестнадцатеричном представлении?
В этом случае см. Другие ответы.
Использование шестнадцатеричного кода напрямую должно работать:
>>> a = [0,1] >>> a = [hex(i) for i in a] >>> a ['0x0', '0x1']