Python 字节数组到整数的转换(TFTP 客户端)

Python byte array to integer conversion (TFTP Client)

我正在尝试使用 Python 2.7.
设置 TFTP 客户端 问题是当我收到数据包时,它是整数字节数组的形式。例如:“\x03\x00\x01”。我想将字节数组字符串的每个字节转换为相应的整数值。

我试过这个方法:

receiving_pack = '\x03\x00\x01'
int(receiving_pack[0], 16)

但我收到以下错误消息:

ValueError: invalid literal for int() with base 16: '\x03'

我尝试了另一种方法:

struct.unpack(h, receiving_pack[0])[0]

但出现错误:

error: unpack requires a string argument of length 2

最好的方法是:

receiving_pack = '\x03\x00\x01'

逐字节将其转换为整数:

map(ord, receiving_pack)
-> [3, 0, 1]

您的格式字符串不正确。它必须用引号引起来(很明显),并且它定义的字节数必须与字节字符串中的字节数相匹配。

使用unpack将字节串b'\x03\x00\x01'转换为整数,

使用 Python 3.6:

>>>import struct
>>>i = struct.unpack('<BBB', b'\x03\x00\x01')
>>>print(i)
(3,0,1)

struct 自 Python 2.7 以来就已存在,因此您应该没有问题。 格式字符串 '

转换为字节数组,然后索引或迭代。

>>> nums = bytearray('\x03\x00\x01')
>>> nums[0]
3
>>> nums[1]
0
>>> nums[2]
1