移动 ArrayBuffer 以便我可以访问 Float32 值
shift ArrayBuffer so I can access Float32 values
我正在尝试读取 .stl 文件
stl 文件格式的前 80 个字节是一个字符串
然后是一个 float32,它是存储在文件中的三角形数。
然后对于每个三角形 12 个 float32 值,
然后是一个 Uint16
然后重复 12 个 Float32 和 1 个 Uint16 模式。
我已经能够获取第一个三角形值,但我无法读取下一个 float32 值数组,因为在获取 Uint16 值后偏移量不再能被 4 整除。
有没有什么办法可以对数组缓冲区进行左移操作,或者有什么方法可以继续读出值?
你可以通过复制把它们拉出来
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);
您也可以使用 DataView
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));
我正在尝试读取 .stl 文件 stl 文件格式的前 80 个字节是一个字符串 然后是一个 float32,它是存储在文件中的三角形数。 然后对于每个三角形 12 个 float32 值, 然后是一个 Uint16 然后重复 12 个 Float32 和 1 个 Uint16 模式。
我已经能够获取第一个三角形值,但我无法读取下一个 float32 值数组,因为在获取 Uint16 值后偏移量不再能被 4 整除。 有没有什么办法可以对数组缓冲区进行左移操作,或者有什么方法可以继续读出值?
你可以通过复制把它们拉出来
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);
您也可以使用 DataView
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));