问题描述
我正在尝试读取.stl文件,其stl文件格式的前80个字节为字符串,然后为float32,即存储在文件中的三角形数。 然后为每个三角形12个float32值,然后是Uint16,然后是12个Float32和1个Uint16模式重复。
我已经能够获得第一个三角形值,但是我无法读取下一个float32值数组,因为在获得Uint16值之后,偏移量不再可以被4整除。 有什么方法可以对arraybuffer进行左移操作,也可以通过某种方式继续读取值?
1楼
您可以通过复制将它们拉出
const src = new Uint8Array([1,2,3,4,5,0,0,246,66,0,0,144,64,14,15,16,17,18,19]); const offset = 5; const numFloats = 2; const floats = new Float32Array(src.slice(offset, offset + numFloats * 4).buffer); console.log(floats);
您也可以使用
const src = new Uint8Array([1,2,3,4,5,0,0,246,66,0,0,144,64,14,15,16,17,18,19]); const offset = 5; const dataview = new DataView(src.buffer); const littleEndian = true; console.log(dataview.getFloat32(offset, littleEndian)); console.log(dataview.getFloat32(offset + 4, littleEndian));