Преобразование байтов в строку или число в Python

#python #string #byte

#python #строка #байт

Вопрос:

Я хочу получить первые 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 в одно число или строку.

Комментарии:

1. Хорошим примером было бы.

Ответ №1:

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

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

Ответ №2:

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

 payload  = bytearray(b'x41x42x43') #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
  

Ответ №3:

 dst_mac = ''
for byte_pos in range(6):
    dst_mac = dst_mac   str(hex((ord(payload[byte_pos])))[2:])
print dst_mac
  

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

Спасибо