Javascript将int值转换为八位字节stream数组

我想将一个整数(有符号)转换为32位(大端)到八位字节stream中,并将八位字节stream作为数组值赋予缓冲区对象的构造函数。

我可以在控制台中创build它,例如对于值-2000:

<code> buf = Buffer(4) buf.writeInt32BE(-2000) buf // is <Buffer ff ff f8 30> buf1 = new Buffer([0xff, 0xff, 0xf8, 0x30]) </code> 

值-3000是例如-3000:0xff,0xff,0xf4,0x48

但我使用的框架不接受writeInt32BE函数,并抛出exception。

我怎么能转换一个32位整数值签署到一个八位字节数组stream没有writeInt32BE?

一个函数,它接受一个值并返回一个八位字节stream的数组。

使用一个4字节的数组缓冲区,转换为数据视图,并在视图上调用setInt32似乎工作。 该方法支持与机器体系结构无关的小端和大端(默认)格式的规范。

 function bigEnd32( value) { var buf = new ArrayBuffer(4); var view = new DataView(buf); view.setInt32( 0, value); return view; } // quick test (in a browser) var n = prompt("Signed 32: "); var view = bigEnd32( +n); for(var i = 0 ; i < 4; ++i) console.log(view.getUint8( i)); 

文档find“MDN ArrayBuffer”,“MDN Dataview”等等。查看DataView的详细信息,查看访问底层数组缓冲区的属性 – 您可以调整代码以适应您的应用程序。

Interesting Posts