Python печать десятичного числа в шестнадцатеричном формате с 4-мя местами - PullRequest
0 голосов
/ 28 января 2020

У меня есть список из нескольких десятков записей в десятичном формате.

CP111 = [  
[0, 0, 0, 0, 0, 0, 0, 0],  
[126, 129, 165, 129, 189, 153, 129, 126],  
[126, 255, 219, 255, 195, 231, 255, 126],  
[108, 254, 254, 254, 124, 56, 16, 0],  
[16, 56, 124, 254, 124, 56, 16, 0],  
[56, 124, 56, 254, 254, 124, 56, 124],  
[16, 16, 56, 124, 254, 124, 56, 124],  
[0, 0, 24, 60, 60, 24, 0, 0],  
[255, 255, 231, 195, 195, 231, 255, 255],  
[0, 60, 102, 66, 66, 102, 60, 0],
];  

Мне нужно преобразовать десятичное число в шестнадцатеричное, затем отформатировать шестнадцатеричное число в 4 места и распечатать его без кавычек. Это настолько близко, насколько я понял:

CP111 = [  
[0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0],  
[0x3e, 0x41, 0x55, 0x43, 0x55, 0x41, 0x3e, 0x0],  
[0x3e, 0x7f, 0x6b, 0x7d, 0x6b, 0x7f, 0x3e, 0x0],  
[0x38, 0x7c, 0x3e, 0x1f, 0x3e, 0x7c, 0x38, 0x0],  
[0x8, 0x1c, 0x3e, 0x7f, 0x3e, 0x1c, 0x8, 0x0],  
[0x8, 0x1c, 0x29, 0x7f, 0x29, 0x1c, 0x8, 0x0],  
[0x8, 0x1c, 0x3d, 0x7f, 0x3d, 0x1c, 0x8, 0x0],  
[0x0, 0x1c, 0x3e, 0x3e, 0x3e, 0x1c, 0x0, 0x0],  
[0xff, 0xe3, 0xc1, 0xc1, 0xc1, 0xe3, 0xff, 0xff],  
[0x0, 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x0, 0x0]
];  

for char in CP111:
  print '[{}],'.format(', '.join(hex(x) for x in char))

Получит мне напечатанный гекс, который мне нужен, но не в формате 4 широких отступа

Я пробовал:

print "{0:#0{1}x}".format('[{}]'.format(', '.join(hex(x) for x in font_char)),4)
print '[{}]'.format(', '.join("0x{:04x}".format(hex(x) for x in font_char)))

... и несколько других попыток в одну строку, которые приводят к синтаксическим ошибкам или ValueError: неизвестный код формата 'x' для объекта типа 'str'

Возможно, невозможно поместить его в один line.
Мне нужно:

CP111 = [  
[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],  
[0x3e, 0x41, 0x55, 0x43, 0x55, 0x41, 0x3e, 0x00],  
[0x3e, 0x7f, 0x6b, 0x7d, 0x6b, 0x7f, 0x3e, 0x00],  
[0x38, 0x7c, 0x3e, 0x1f, 0x3e, 0x7c, 0x38, 0x00],  
[0x08, 0x1c, 0x3e, 0x7f, 0x3e, 0x1c, 0x08, 0x00],  
[0x08, 0x1c, 0x29, 0x7f, 0x29, 0x1c, 0x08, 0x00]  
.....

Помогите пожалуйста

1 Ответ

0 голосов
/ 30 января 2020

Это то, что я понял, если кому-то еще нужно направление:

print '[{}],'.format(', '.join('0x{:02x}'.format(x) for x in font_char))
...