#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
Таким образом, это сработало.
Спасибо