我的任务是从二进制小端.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交换,但结果也不好。
我认为我是以错误的方式提取字节。
答案 0 :(得分:0)
如@tinman所述:
如果你已经在unsigned int变量中有了表示你的float的字节,那么你可以建立unsigned int和float的联合,将你所拥有的unsigned int赋值给union中的unsigned int,然后读取float中的工会。