gpt4 book ai didi

python - 如何将文件中的二进制数据解包/转换为可读值?

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:50 24 4
gpt4 key购买 nike

我有一个 .pcd 文件,当我用文本编辑器打开它时,我看到这个:

# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z _
SIZE 4 4 4 1
TYPE F F F U
COUNT 1 1 1 4
WIDTH 246564
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 246564
DATA binary
É,> Ì= €¿ €? .> Ì=ÃY¿ €? .>Ì~Í= €¿ €? 2> Ì=5a¿ €? 2>øuÍ= €¿
€? 6> Ì=Ûv¿ €? 6>²vÌ= €¿ €?¹“6> Ì= €¿ €?CÊ"> Ä= €¿ €? & Ä=…¿
......

该格式的文档在这里:http://pointclouds.org/documentation/tutorials/pcd_file_format.php

文档中的示例:

# .PCD v.7 - Point Cloud Data file format
VERSION .7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 213
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 213
DATA ascii
0.93773 0.33763 0 4.2108e+06
0.90805 0.35641 0 4.2108e+06
0.81915 0.32 0 4.2108e+06

现在我想将这些二进制数据转换成文档中的数字。正如我所看到的,我可以使用 python Strike.unpack 但我不知道如何做到这一点。

最佳答案

如果您想使用 struct 并且提供的文件是您想要从中提取数据的唯一文件,这是您可以做到的一种方法:

import struct

with open("your_file.pcd") as f:
lines = f.readlines()

unpacker = struct.Struct("fff4B")
packed_data = lines[-1]
x = []
y = []
z = []
_ = []
for i in range(0, 246564):
try:
unpacked = unpacker.unpack_from(packed_data[i:])
except struct.error:
break
x.append(unpacked[0])
y.append(unpacked[1])
z.append(unpacked[2])
_.append(unpacked[3:])

print(x)
print(y)
print(z)
print(_)

这当然不是解析像 PyPCD 这样的 PCD 文件的通用方法。是,但它确实适用于这个特定的文件和数据集。

关于python - 如何将文件中的二进制数据解包/转换为可读值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56983991/

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