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
我正在尝试使用 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