gpt4 book ai didi

python - 用\and 分隔的十六进制数据是什么类型的?

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:50 25 4
gpt4 key购买 nike

我有一个从 pixhawk 中提取的数据集。我正在尝试解析这些数据并绘制其中一些与时间的关系图。问题是当我使用此代码打开其中一个 bin 文件时:

with open("px4log.bin", "rb") as binary_file:
# Read the whole file at once
data = binary_file.read()
print(data)

我得到的数据如下所示:

b'\xa3\x95\x80\x80YFMT\x00BBnNZ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Type,Length,Name,Format,Columns\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x95\x80\x81\x17PARMNf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Name,Value\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x95\x80\x82-GPS\x00BIHBcLLeeEefI\x00\x00\x00Status,TimeMS,Week,NSats,HDop,Lat,Lng,RelAlt,Alt,Spd,GCrs,VZ,T\x00\x00\xa3\x95\x80\x83\x1fIMU\x00Iffffff\x00\x00\x00\x00\x00\x00\x00\x00\x00TimeMS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0

有人告诉我它应该是二进制的,但事实并非如此。除非 python 在打开数据集时对数据集做了什么?

如果您愿意,可以从以下位置下载此示例数据集:

https://pixhawk.org/_media/downloads/px4log_sample_1.px4log.zip

最佳答案

Python 向您展示了 hexadecimal 中表示的二进制数据当字符不符合常规 ascii 时特点。例如\xa3 是一个十六进制值A3 的字节,二进制为10100011。另一方面,T 可以打印为 \x54,这是一个字节的二进制值 01010100。由于您使用了 print 函数,python 假定您正在尝试将二进制数据转换为人类可读的字符串,因此它显示了相应的字符 而不是 \x54 T.

您可以使用以下代码获取代表您的数据的二进制字符串数组:

data = '\xa3\x95\x80\x80YFMT\x00BBnNZ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Type,Length,Name,Format,Columns'

decimalArray = map(ord,data)
byteArray = map(lambda x: "{0:b}".format(x), decimalArray)
print byteArray

这是输出:

['10100011', '10010101', '10000000', '10000000', '1011001', '1000110', '1001101', '1010100', '0', '1000010', '1000010', '1101110', '1001110', '1011010', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1010100', '1111001', '1110000', '1100101', '101100', '1001100', '1100101', '1101110', '1100111', '1110100', '1101000', '101100', '1001110', '1100001', '1101101', '1100101', '101100', '1000110', '1101111', '1110010', '1101101', '1100001', '1110100', '101100', '1000011', '1101111', '1101100', '1110101', '1101101', '1101110', '1110011']

关于python - 用\and 分隔的十六进制数据是什么类型的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40047029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com