python中RTCM msg的二进制解析

python中RTCM msg的二进制解析,python,parsing,binary,gps,Python,Parsing,Binary,Gps,要分析RTCM二进制数据。使用ublox gps接收机。使用以下命令查找RTCM开始字节D3 if buffer[i] == 0xd3 但似乎不匹配,根本没有进入循环。我试过了 if buffer[i] == b'xd3' 但它也不起作用 在powershell提示符(anaconda)中测试,检查如下: >>> bin_Str = b'\x24\x47\x50\xd3' >>> bin_Str b'$GP\xd3' >>> bin

要分析RTCM二进制数据。使用ublox gps接收机。使用以下命令查找RTCM开始字节D3

if buffer[i] == 0xd3 
但似乎不匹配,根本没有进入循环。我试过了

if buffer[i] == b'xd3'  
但它也不起作用

在powershell提示符(anaconda)中测试,检查如下:

>>> bin_Str = b'\x24\x47\x50\xd3'
>>> bin_Str
b'$GP\xd3'
>>> bin_Str[3] == 0xd3
True

所以,它似乎应该匹配0xd3。我查过日志了。二进制数据中有D3。有人能帮忙吗?非常感谢。

b'xd3'
不是一个字节。它是3个字节,来自ASCII字符
x
d
3
。您需要
b'\xd3'
(两个十六进制数字前的反斜杠和
x
组合是一个单字节的有效十六进制转义序列)。这并不是说将其与
缓冲区[i]
进行比较是可行的,因为在
字节
对象中,单个元素实际上是整数。但是,我们无法在此提供帮助,因为我们没有任何关于
缓冲区实际上是什么的信息。谢谢您的回复,很抱歉这么晚才回复。这实际上有一个基本问题。我本来应该读的二进制文件被修改了——它不是我认为我在读的东西。成立后,它解决了这个问题。不过还是谢谢你。我相信这对将来会有帮助的。转换带来了一些难以检测的问题。