Почему этот первый байт печатается как (b'c \ x ..) вместо (b'x63 \ x ..)? - PullRequest
0 голосов
/ 04 ноября 2018

Я пишу программу для дополнения атак оракула и нужно bytearrays, но если я определю новый bytearray, первый байт 0x63 будет напечатан иначе.

Мне нужно XOR 2 bytearrays в байтах.

test = bytearray( [99,203,00] )
print(test)
print(hex(99))

Выход:

bytearray(b'c\xcb\x00')
0x63

Это мой первый вопрос здесь. Спасибо за вашу помощь!

f

1 Ответ

0 голосов
/ 04 ноября 2018

Для вывода строки python заменяет печатаемые шестнадцатеричные коды на символ chr(hexcode) для отображения:

print('c', ord('c'),hex(ord('c')))   #  c 99 '0x63'

t = bytearray([99,203,0])
print(t)                             #  bytearray(b'c\xcb\x00')
print(t[0],t[1],t[2])                #  99 203 0

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

t = bytearray([99,203,0])
t_hex = '\\'+'\\'.join( ( hex(i) for i in t) ) 

print(t_hex)

Выход:

\0x63\0xcb\0x0 
...