我正在尝试使用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
答案 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以来一直存在,所以你不应该有问题。 格式字符串&#39;
答案 1 :(得分:0)
最好的方法是:
receiving_pack = '\x03\x00\x01'
将其逐字节转换为整数:
map(ord, receiving_pack)
-> [3, 0, 1]