簡體   English   中英

Javascript 將 int 值轉換為八位字節流數組

[英]Javascript Convert int value to octet stream Array

我想將一個整數(有符號)轉換為 32 位(大端)到一個八位字節流,並將八位字節流作為數組值提供給緩沖區對象的構造函數。

例如,我可以在控制台中為值 -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 函數並拋出異常。

如何在沒有 writeInt32BE 的情況下將有符號的 32 位整數值轉換為八位字節數組流?

一個函數,它接受一個值並返回一個八位字節流數組。

使用 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));

文檔位於搜索“MDN ArrayBuffer”、“MDN Dataview”等的位置。詳細查看DataView以獲取訪問底層數組緩沖區的屬性 - 您可以調整代碼以適應您的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM