如何获取字节变量中的数字?
我必须使用串行和python将数据从Arduino传输到Raspberry Pi。我成功隔离了变量,但其类型为字节,如何将其转换为int变量?
变量是
b'27'
但我想得到
27
我尝试过
print(int.from_bytes(b'\x27', "big", signed=True))
但是我没有成功获得正确的数字27
答案 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。