如何将字节值“ b'27'”转换为整数27

时间:2019-04-08 17:41:29

标签: python arduino int byte

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

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

变量是

b'27'

但我想得到

27

我尝试过

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

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

2 个答案:

答案 0 :(得分:3)

您可以使用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编码可能会破坏两者的情况

答案 1 :(得分:1)

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

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

因为'\x27'实际上是值39的十六进制值。在线加载conversion tables有助于将十进制值与十六进制值进行交叉引用。对于小于10的值,这两种形式只有1:1。