簡體   English   中英

如何*反轉* JavaScripts DataView?

[英]How to *reverse* JavaScripts DataView?

我知道這個問題的措辭很奇怪,所以讓我用兩個例子來解釋一下。

示例 1
下面的代碼將一系列值[64, 176, 0, 86, 68, 97, 136, 8]轉換為浮點數4096.336980910979

(new DataView(new Uint8Array([64, 176, 0, 86, 68, 97, 136, 8]).buffer)).getFloat64();
/*Output 4096.336980910979*/

當我輸入浮點數4096.336980910979時,如何反轉它以獲得一系列值[64, 176, 0, 86, 68, 97, 136, 8]

示例 2:
下面的代碼將一系列值[70, 253, 192, 0]轉換為浮點數32480

(new DataView(new Uint8Array([70, 253, 192, 0]).buffer)).getFloat32();
/*Output 32480*/

當我輸入浮點數32480時,如何反轉它以獲得一系列值[70, 253, 192, 0]

我已經創建了一個解決方案!

浮點32解決方案:

var arrayBuffer = new ArrayBuffer(4); /*Create an Array Buffer (Blank)*/
var floatArray = new Float32Array(arrayBuffer); /*Use the Float32 instance of the Buffer*/
var uintArray = new Uint8Array(arrayBuffer); /*Use the Uint8 instance of the Buffer*/

floatArray[0] = 32480; /*Define a value to the Float32Array*/
/*In order to correctly access the Uint8Array, it must be reversed for some reason?!*/
var newUintArray = uintArray.reverse();
var newarr = (new DataView(newUintArray.buffer)).getFloat32();

變量newarr應該等於 32480 並且變量newUintArray可用於訪問反轉的 dataview

浮點 64 解決方案:

var arrayBuffer = new ArrayBuffer(8);
var floatArray = new Float64Array(arrayBuffer);
var uintArray = new Uint8Array(arrayBuffer);

floatArray[0] = 30543;
var newUintArray = uintArray.reverse();
var newarr = (new DataView(newUintArray.buffer)).getFloat64();

暫無
暫無

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

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