相关疑难解决方法(0)

javascript浮动/到位

我试图在任何其他语言中执行一些简单易懂的东西,但不是javascript:从浮动中获取位数(反之亦然).

在C/C++中它会是这样的

float a = 3.1415;
int b = *((int*)&a);

反之亦然

int a = 1000;
float b = *((float*)&a);

在C#中,您可以使用BitConverter ... floatBits或类似的东西......即使在VB6中为了基督的缘故,您也可以将float32存入int32.我怎么能在javascript中转换和int和浮点数?

javascript types

22
推荐指数
2
解决办法
7288
查看次数

如何在Javascript中将浮点数转换为二进制表示(IEEE 754)?

在Javascript中将浮点数转换为二进制表示形式的最简单方法是什么?(例如1.0 - > 0x3F800000).

我试图手动完成,这在一定程度上(通常的数字)起作用,但是对于非常大或非常小的数字(没有范围检查)和特殊情况(NaN,无穷大等)都会失败:

function floatToNumber(flt)
{
    var sign = (flt < 0) ? 1 : 0;
    flt = Math.abs(flt);
    var exponent = Math.floor(Math.log(flt) / Math.LN2);
    var mantissa = flt / Math.pow(2, exponent);

    return (sign << 31) | ((exponent + 127) << 23) | ((mantissa * Math.pow(2, 23)) & 0x7FFFFF);
}
Run Code Online (Sandbox Code Playgroud)

我重新发明轮子了吗?

编辑:我改进了我的版本,现在它处理特殊情况.

function assembleFloat(sign, exponent, mantissa)
{
    return (sign << 31) | (exponent << 23) | (mantissa);
}

function floatToNumber(flt)
{
    if (isNaN(flt)) // Special case: NaN
        return …
Run Code Online (Sandbox Code Playgroud)

javascript floating-point binary ieee-754

21
推荐指数
2
解决办法
8774
查看次数

编码和解码IEEE 754在JavaScript中浮动

我需要编码和解码IEEE 754浮点数并从node.js中的二进制文件加倍来解析网络协议.

是否有任何现有的库可以执行此操作,或者我是否必须阅读规范并自行实施?或者我应该写一个C模块来做吗?

javascript floating-point ieee-754 node.js

8
推荐指数
1
解决办法
4505
查看次数

在没有Float32Array的情况下将"float"转换为Javascript中的字节

好吧,所以我是一个相当讨厌的情况,我无法访问类型化的数组,如Float32Array,但仍然需要能够将Javascript数转换为字节.现在,我可以处理的整数很好,但我不知道如何为浮点值做.

我已经解决了相反的问题(将字节转换为浮点数),但是关于从float转换为字节的文档非常缺乏,因为大多数语言只是让您读取指针或具有处理它的公共类.

理想情况下,我希望能够将浮点数转换为4字节和8字节表示,并选择使用哪一个.但是,只需要一个数字并将其吐出为8字节的代码仍然很棒,因为我可能从那里自己想出32位版本.

javascript floating-point type-conversion

8
推荐指数
1
解决办法
5047
查看次数

将两个 Uint32Array 值转换为 Javascript 数字

我从这里找到了一个代码,它将 Javascript 数字转换为内部 IEEE 表示,作为两个 Uint32 值:

function DoubleToIEEE(f)
{
  var buf = new ArrayBuffer(8);
  (new Float64Array(buf))[0] = f;
  return [ (new Uint32Array(buf))[0] ,(new Uint32Array(buf))[1] ];
}
Run Code Online (Sandbox Code Playgroud)

如何将返回值转换回 Javascript 数字?这边走:

var number = -10.3245535;
var ieee = DoubleToIEEE(number)
var number_again = IEEEtoDouble(ieee);
// number and number_again should be the same (if ever possible)
Run Code Online (Sandbox Code Playgroud)

javascript types numbers

5
推荐指数
2
解决办法
2591
查看次数

在JavaScript中将IEEE 754从位流转换为浮点数

我使用GO语言函数(math.Float32bits)序列化了32位浮点数,它返回对应于IEEE 754二进制表示的浮点数.然后将此数字序列化为32位整数,并将其作为字节数组读入java脚本.

例如,这是实际数字:

float: 2.8088086
as byte array:  40 33 c3 85
as hex: 0x4033c385
Run Code Online (Sandbox Code Playgroud)

有一个演示转换器显示相同的数字.

我需要从JavaScript中的字节数组中获取相同的浮点数,我不知道如何做到这一点.

javascript floating-point ieee-754

3
推荐指数
2
解决办法
3034
查看次数

javascript中双精度到字节数组的转换

我正在尝试将一些 Java 代码转换为我正在开发的应用程序所需的 JavaScript。我被困在一个类及其方法上,这些方法将 double 类型的变量转换为 long,然后将 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(.) …
Run Code Online (Sandbox Code Playgroud)

javascript binary double

2
推荐指数
1
解决办法
7635
查看次数

在 Javascript 中将打包字节字符串转换为浮点数数组

语境

我知道在 python 中你可以创建一个表示数组打包字节的字符串,执行如下操作:

import numpy as np

np.array([1, 2], dtype=np.int32).tobytes() 
# returns '\x01\x00\x00\x00\x02\x00\x00\x00'

np.array([1, 2], dtype=np.float32).tobytes() 
# returns '\x00\x00\x80?\x00\x00\x00@'
Run Code Online (Sandbox Code Playgroud)

它们可以使用np.fromstring进行解码

问题

目前,我的 Javascript 正在接收一串打包字节,该字符串对浮点数组(即'\x00\x00\x80?\x00\x00\x00@')进行编码,并且我需要解码该数组 - 执行此操作的最佳方法是什么?

(如果它是一个整数数组,我想我可以使用文本编码来提取字节,然后适当地相乘和相加......)

谢谢,

javascript arrays encoding

1
推荐指数
1
解决办法
1420
查看次数