Конвертировать байты в строку или число в Python - PullRequest
0 голосов
/ 24 апреля 2019

Я хочу получить первые 6 байтов из полезной нагрузки в виде одного числа или строки.

for byte_pos in range(6):
   byte_content  = ord(payload[byte_pos])

Предположим, полезная нагрузка равна 1 2 3 4 5 6,

for byte_pos in range(6):
   print ord(payload[byte_pos])

Этобудет выглядеть следующим образом: 0x1 0x2 0x3 0x4 0x5 0x6

Но мне нужно одно число / строка, например 123456. Как объединить эти отдельные числа, чтобы получилось 123456?

Как преобразовать эти6 byte_contents для одного числа или строки.

Ответы [ 3 ]

2 голосов
/ 24 апреля 2019

Если вы читаете байты, это означает, что вы читаете целые числа от 0 до 255. Таким образом, вы можете быстро превратить эти числа в основание-10 следующим образом: int(str(byte), 2)

Если вы хотите превратить байты в символы, вы можете использовать функцию chr (): char = chr(int(str(byte), 2))

1 голос
/ 24 апреля 2019

Если вы работаете с Python 2.x, вот ответ (если я понял, что вы хотите сделать):

payload  = bytearray(b'\x41\x42\x43') #Hex code for ABC
final_string = ''


for byte_pos in range(3):
   byte_content  = chr(payload[byte_pos])
   #print byte_content
   final_string = final_string + byte_content
   print final_string

Вывод будет:

A
AB
ABC
0 голосов
/ 24 апреля 2019
dst_mac = ''
for byte_pos in range(6):
    dst_mac = dst_mac + str(hex((ord(payload[byte_pos])))[2:])
print dst_mac

Таким образом, это сработало.

Спасибо

...