Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将js中的四个十六进制数更改为浮点数?_Javascript_Floating Point - Fatal编程技术网

Javascript 如何将js中的四个十六进制数更改为浮点数?

Javascript 如何将js中的四个十六进制数更改为浮点数?,javascript,floating-point,Javascript,Floating Point,像这样: 我有一个浮点数25.56,我可以将它翻译成js中的四个十六进制数e17acc41,这种翻译方式在C中称为并集 但是我不知道如何将e17acc41更改为js中的float,并且: 这将返回数组[“e1”、“7a”、“cc”、“41”] 另一种方法也可以: new Float32Array( new Uint8ClampedArray( ["e1", "7a", "cc", "41"].map(function(a){ return parseInt(a, 16);

像这样:

我有一个浮点数
25.56
,我可以将它翻译成js中的四个十六进制数
e17acc41
,这种翻译方式在C中称为并集


但是我不知道如何将e17acc41更改为js中的float,并且:

这将返回数组
[“e1”、“7a”、“cc”、“41”]

另一种方法也可以:

new Float32Array(
  new Uint8ClampedArray(
    ["e1", "7a", "cc", "41"].map(function(a){
      return parseInt(a, 16);
    })
  ).buffer
);
注意:这不会返回
25.56
Float32Aray
,而是
25.55999465942383
,因为这就是32位浮点数的所有精度。使用
Float64Array
,您将获得十六进制数组
[“8f”、“c2”、“f5”、“28”、“5c”、“8f”、“39”、“40”]
,然后您将精确地返回数字
25.56

这些API仅在Firefox4、Chrome7和InternetExplorer10之后才受支持


构造函数
uint8clampedaray
Float32Array
可以获取一个长度作为其参数,即数组或
ArrayBuffer

当他们得到一个数组时,将从该数组创建一个新的类型化数组


当他们得到一个
ArrayBuffer
时,会根据缓冲区所属的类型数组的内容和类型创建一个新的类型数组。

你能告诉我们你到目前为止尝试了什么吗?我想OP的意思是类似
新的Uint8ClampedArray(新的Float32Array([25.56]).buffer的东西。
。预期结果(
e17acc41
)如下所示:
Array.from(newuint8clampedaray(newfloat32array([25.56]).buffer)).map(函数(a){return a.toString(16)}
。另一种方法在JavaScript中也是可能的,但是adeneo建议的复制目标是不正确的。
new Float32Array(
  new Uint8ClampedArray(
    ["e1", "7a", "cc", "41"].map(function(a){
      return parseInt(a, 16);
    })
  ).buffer
);