如何将字节值 "b'27 '" 转换为 int 27

How to transform a byte value "b'27 '" into int 27

如何获取字节变量中的数字?

我必须使用串口和 python 将数据从 Arduino 传输到 Raspberry Pi。我成功隔离了变量,但它的类型是字节,如何将其转换为 int 变量?

变量是

b'27'

但我想得到

27

我试过了

print(int.from_bytes(b'\x27', "big", signed=True))

但是我没有成功得到正确的数字 27

您可以使用 decode 将其变为常规 str 然后使用 int:

x = b'27'

y = int(x.decode()) # decode is a method on the bytes class that returns a string
type(y)
# <class 'int'>

或者:

y = int(b'27')
type(y)
# <class 'int'>

根据@chepner 的评论,您需要注意奇怪的编码可能会破坏后一种方法的情况,而对于非 utf-8 编码,它可能会破坏两者

为了补充 C.Nivs 给出的有用且实用的答案,我想补充一点,如果您想使用 int.from_bytes() 检索值 27,您需要执行以下操作:

int.from_bytes(b'\x1B', "big", signed=True)

因为 '\x27' 实际上是值 39 的十六进制值。网上有很多 conversion tables 可以帮助交叉引用十进制值和十六进制值。这两种形式仅对小于 10 的值 1:1