在Python中将字节转换为字符串或数字

问题描述 投票:0回答:3

我想从有效负载中获取前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转换为单个数字或字符串。

python string byte
3个回答
2
投票

如果您正在读取字节,则表示您正在读取0到255之间的整数。因此,您可以将这些数字快速转换为基数-10,如下所示:int(str(byte), 2)

如果要将字节转换为字符,可以使用chr()函数:char = chr(int(str(byte), 2))


1
投票

如果您正在使用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
投票
dst_mac = ''
for byte_pos in range(6):
    dst_mac = dst_mac + str(hex((ord(payload[byte_pos])))[2:])
print dst_mac

这样,它奏效了。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.