0

我的任务是从二进制 little endian .ply 文件中读取顶点数据。问题是我找不到从 end_header 行之后正确提取数据的方法。

层文件:

ply
format binary_little_endian 1.0
element vertex 240753
property float x
property float y
property float z
property float nx
property float ny
property float nz
element face 477808
end_header
(after the end header there is a A0 byte indicating the new line then, ...)
AC76A0C04301644163416a42 ...

即使是第一次浮动,我也无法正确识别。如果我使用浮点的 IEE754 表示转换前 4 个字节,结果是 -3.5047936775001176e-12,但是前四个字节(= 第一个顶点的第一个 x 坐标)应该是 -5.01449(根据从二进制到 ascii ply 文件的 meshlab 转换)。

我正在使用 c++ fread, fseek, ...

我尝试每 4 个字节进行一次字节序交换,但结果也很糟糕。

我认为我以错误的方式提取字节。

4

1 回答 1

0

正如@tinman 所述:

如果您已经在 unsigned int 变量中拥有代表浮点数的字节,那么您可以将 unsigned int 和 float 合并,将您拥有的 unsigned int 分配给联合中的 unsigned int,然后读取联合中的浮点数。

于 2015-05-10T15:39:38.280 回答