gpt4 book ai didi

javascript - javascript中的双字节数组转换

转载 作者:行者123 更新时间:2023-11-30 10:12:09 25 4
gpt4 key购买 nike

我正在尝试将一些 Java 代码转换为我正在处理的应用程序所需的 JavaScript。我坚持使用一个类及其方法,将 double 类型的变量转换为 long,然后将 long 转换为由 8 个字节组成的字节数组,表示该长数字。 Java代码如下:

 public static byte[] doubleToByteArray(double number)
{
// double to long representation
long longNum = Double.doubleToLongBits(number);

// long to 8 bytes
return new byte[] {(byte)((longNum >>> 56) & 0xFF),
(byte)((longNum >>> 48) & 0xFF),
(byte)((longNum >>> 40) & 0xFF),
(byte)((longNum >>> 32) & 0xFF),
(byte)((longNum >>> 24) & 0xFF),
(byte)((longNum >>> 16) & 0xFF),
(byte)((longNum >>> 8) & 0xFF),
(byte)((longNum >>> 0) & 0xFF)};
} // end doubleToByte(.)

我将如何在 JavaScript 中执行此操作?我的第一个问题是 doubleToLongBits 方法。 JavaScript 中是否存在类似的东西?此外,如何将变量转换为字节?

提前致谢。

最佳答案

基于 Brian's answer在你的 desired representation 上,您可以按如下方式使用类型化数组:

function doubleToByteArray(number) {
var buffer = new ArrayBuffer(8); // JS numbers are 8 bytes long, or 64 bits
var longNum = new Float64Array(buffer); // so equivalent to Float64

longNum[0] = number;

return Array.from(new Int8Array(buffer)).reverse(); // reverse to get little endian
}

function interactiveExample() {
var input = parseFloat(document.getElementById('input').value);
var output = document.getElementById('output');
var result = doubleToByteArray(input);

output.innerHTML = '[' + result[0];
for (var i = 1; i < result.length; i++) {
output.innerHTML += ', ' + result[i];
}
output.innerHTML += ']';
}

document.getElementById('input').value = Math.PI;
interactiveExample();
<input type="number" id="input" step="0.01" onchange="interactiveExample()" />
<div id="output"></div>

关于javascript - javascript中的双字节数组转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25942516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com