读取二进制PLY文件会产生奇怪的结果

时间:2011-10-09 15:39:33

标签: c++ binaryfiles fread file-format ply-file-format

我的任务是从二进制小端.ply文件中读取顶点数据。问题是我无法找到如何正确提取数据的方法,从end_header行开始。

PLY文件:

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表示float转换前4个字节,结果是-3.5047936775001176e-12,但前四个字节(=第一个顶点的第一个x坐标)应为-5.01449(根据meshlab从二进制转换为ascii ply文件)。

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

我尝试每4个字节进行endian交换,但结果也不好。

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

1 个答案:

答案 0 :(得分:0)

如@tinman所述:

  

如果你已经在unsigned int变量中有了表示你的float的字节,那么你可以建立unsigned int和float的联合,将你所拥有的unsigned int赋值给union中的unsigned int,然后读取float中的工会。