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

时间:2017-05-19 14:47:04

标签: arrays python-2.7 type-conversion tftp

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

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]