如何在Python3中将ascii十进制数的字节数组转换为整数

如何在Python3中将ascii十进制数的字节数组转换为整数,python,python-3.x,bytearray,ascii,Python,Python 3.x,Bytearray,Ascii,我正在尝试与arduino串行通信,arduino正在以ASCII字符串的形式向我发送轮询ADC通道的结果,十进制结果通常附加一个EOT字符('\x04')。 因此,我可能期望PySerial的典型结果是: b'0\x04' 对于整数0,或 b'293\x04' 对于整数293,甚至 b'1023\x04' 对于可能的最高值,为1023 在PC端,我运行的是Python3.2(在Windows7上) 我想把从PySerial接收到的字节转换成一个整数,这样我就可以用它们进行计算了 如何将字

我正在尝试与arduino串行通信,arduino正在以ASCII字符串的形式向我发送轮询ADC通道的结果,十进制结果通常附加一个EOT字符('\x04')。 因此,我可能期望PySerial的典型结果是:

b'0\x04'
对于整数0,或

b'293\x04'
对于整数293,甚至

b'1023\x04'
对于可能的最高值,为1023

在PC端,我运行的是Python3.2(在Windows7上)

我想把从PySerial接收到的字节转换成一个整数,这样我就可以用它们进行计算了

如何将字节数组转换为整数?

我可以阻止arduino在数值之后发送EOT字符,但让它们留在里面可能更安全


我是Python的初学者,但对C不太熟悉。

从右侧去掉EOT字符,并将结果输入到
int

>>> int(b'1023\x04'.rstrip(b'\x04'))
1023

注意:如果保证EOT,您可以简化为只删除最后一个字符,
int(b'1023\x04'[:-1])
<但是,code>rstrip通常更安全(假设不存在多个EOT字符的风险,其中多个EOT字符的存在可能具有某种特殊意义)。其他有趣的方法可能包括用空格替换(
int
已经忽略了前导和尾随空格,遗憾的是,EOT不算作空格)。