如何改变四个十六进制数浮动在js

how to change four hexadecimal number to float in js?

本文关键字:十六进制数 js 四个 何改变 改变      更新时间:2023-09-26

像这样:

我有一个浮点数25.56,我可以把它转换成js中的四个十六进制数E1 7A CC 41。翻译方式在c语言中称为并集

但我不知道如何改变E1 7A CC 41的浮动在js

您必须使用类型化数组和数组缓冲区:

Array.from(
  new Uint8ClampedArray(       // Represents the four bytes…
    new Float32Array([25.56])  // …of this number
      .buffer
  )
).map(function(a){
  return a.toString(16);
});

返回数组[ "e1", "7a", "cc", "41" ]

反过来也可以:

new Float32Array(
  new Uint8ClampedArray(
    ["e1", "7a", "cc", "41"].map(function(a){
      return parseInt(a, 16);
    })
  ).buffer
);

注意:这并不完全返回Float32Aray25.56,而是25.559999465942383,因为这是您使用32位浮点数获得的所有精度。对于Float64Array,你会得到十六进制数组["8f", "c2", "f5", "28", "5c", "8f", "39", "40"],然后你会得到数字25.56,精确地。

这些api仅在Firefox 4、Chrome 7和Internet Explorer 10之后才支持。


构造函数Uint8ClampedArrayFloat32Array的实参可以是长度,也可以是数组或ArrayBuffer

当获得一个数组时,将从该数组创建一个新的类型数组。

当它们得到一个ArrayBuffer时,一个新的类型数组将基于缓冲区的内容创建。