首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么b'\x02‘与Python中的值2或int(2)不一样?

为什么b'\x02‘与Python中的值2或int(2)不一样?
EN

Stack Overflow用户
提问于 2019-04-16 16:45:34
回答 2查看 5.1K关注 0票数 1

我有一台PC将字节值2发送给Raspberry Pi。

但是,我不明白为什么Python程序在接收值时不计算为true。

如果我打印接收到的值,它会将b'\x02‘作为输出。

代码语言:javascript
运行
复制
import serial

def GetSerialData():
    x = ser.inWaiting()
    if x > 0:
        received_data = ser.read(x)
        print (received_data)
    return x


ser = serial.Serial ("/dev/ttyAMA0", 9600)
try:
    while True:
        SData = GetSerialData ()
        if ( SData == b'\x02'):
            print ("Ok - value is 2")

except KeyboardInterrupt:
    ser.close()
EN

Stack Overflow用户

发布于 2019-04-16 17:00:20

\x02是十六进制02的ASCII代码,它是STX (文本的开始)。\x32是数字2的ASCII。

如果SData是整数或任何非(二进制)字符串,请记住使用str(SData)将其转换为字符串。

此外,通常情况下,b'A' != 'A'。您希望使用.encode('ascii')将Python字符串转换为ASCII二进制字符串。

代码语言:javascript
运行
复制
>>> binary_A_from_string = 'A'.encode('ascii')
>>> binary_A_from_string
b'A'

>>> binary_A = '\x41' # ASCII 41 (dec 65) is 'A'
>>> binary_A
b'A'

>>> binary_A == 'A'
False
>>> binary_A == binary_A_from_string
True

这是因为Python认为二进制ASCII字符串不同于标准Python字符串。

另外,确保读取的信息实际上是一个字节长。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55713024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档