我想从GPS接收器字节扫描数据文件(实际上这将是一个连续的流程,不想用脱机数据测试代码)。如果找到匹配项,则检查下2个字节的“长度”,然后获取下2个字节并向右移动2位(不是字节),等等。我以前没有处理二进制,因此陷入了一个简单的任务。我可以逐字节读取二进制文件,但找不到按所需模式匹配的方法(即D3)
with open("COM6_200417.ubx", "rb") as f:
byte = f.read(1) # read 1-byte at a time
while byte != b"":
# Do stuff with byte.
byte = f.read(1)
print(byte)
输出文件为:
b'\x82'
b'\xc2'
b'\xe3'
b'\xb8'
b'\xe0'
b'\x00'
b'@'
b'\x13'
b'\x05'
b'!'
b'\xd3'
b'\x00'
b'\x13'
。。。。 如何检查该字节是否为=='\xd3'?(D3) 还想知道如何按位移位,因为我需要检查由6位组成的十进制值 (1字节和下一个字节的前2位)。考虑到,取2字节(8位),然后2位右移 获取6位。在python中可能吗?非常感谢您的任何改进/添加/更改
还有,我能把前面那个讨厌的b去掉吗?但如果忽略它不会影响,那么就没有问题了
提前谢谢
“该字节”前面用一个b“”表示,表示它是一个字节对象。要删除它,可以将其转换为int:
要进行比较,您可以执行以下操作:
因此,将一个字节对象与另一个字节对象进行比较。 转变<&书信电报;运算符仅在int上工作
要将整数转换回字节(假设为[0..255]),可以使用:
至于改进,我建议立即读取整个二进制文件:
相关问题 更多 >
编程相关推荐