将javascript数字转换为浮点(单精度IEEE-754)并接收整数位

将javascript数字转换为浮点(单精度IEEE-754)并接收整数位,javascript,ieee-754,Javascript,Ieee 754,我想将javascript数字截断为单精度(浮点)并接收整数位。我该怎么做 例如,在IEEE-754@32位中,“5”是0x40a00000。我想用Javascript进行5=>0x40a00000映射。此解决方案需要ES2015才能在现代浏览器和NodeJ中工作 Javascript数字是双精度的(IEEE-754@64位/双精度)。使用Float32Array我们可以将f64(双精度)值截断为f32(浮点)表示。使用uint32阵列之后,我们可以提取原始整数位 JSFIDLE上的代码: 作为

我想将javascript数字截断为单精度(浮点)并接收整数位。我该怎么做


例如,在IEEE-754@32位中,“5”是
0x40a00000
。我想用Javascript进行5=>
0x40a00000
映射。

此解决方案需要ES2015才能在现代浏览器和NodeJ中工作

Javascript数字是双精度的(IEEE-754@64位/双精度)。使用
Float32Array
我们可以将f64(双精度)值截断为f32(浮点)表示。使用
uint32阵列
之后,我们可以提取原始整数位

JSFIDLE上的代码:

作为堆栈片段:

//double是“number”(javascript数据类型)
函数JSF64TOF32integerbitstr(双精度){
//float/f32有32位=>4字节
常量字节=4;
//缓冲区就像是进入内存的原始视图
const buffer=new ArrayBuffer(字节);
//Float32Array:将内存中的字节解释为f32(IEEE-754)位
const float32Arr=新的Float32Array(缓冲区);
//UINT32阵列:将内存中的字节解释为无符号整数位。
//重要的是,我们在这里使用unsigned,否则MSB将被解释为signed
const uint32阵列=新uint32阵列(缓冲区);
//将在赋值期间将双精度转换为浮点
float32Arr[0]=双精度;
//现在读取与无符号整数值相同的内存
常量整数值=uint32数组[0];
//到十六进制字符串
常量integerBitsHex=integerValue.toString(16);
//+十六进制前缀
返回“0x”+整数比特十六进制;
}
//“0x40a00000”
log('IEEE-754中的5个单精度为:',JSF64TOF32integerbitstr(5));
//“0xc0490625”
log('-3.141在IEEE-754中单精度为:',JSF64TOF32integerbitstr(-3.141));
//“0x7fffffff”

log('IEEE-754单精度中的NaN为:',JSF64TOF32INTEGERBITSTR(NaN))我知道有很多与IEEE-754相关的问题,但我想在这个问答环节分享我的知识。没有其他问题真正适合我的问题。事实上,因为它只是一个复制和粘贴,我已经为您完成了堆栈片段。谢谢!TBH我不知道嵌入式代码段功能是如何工作的。不客气!我已经详细介绍了这一点(下一次)。尽管从异地复制代码作为编辑是一个版权问题,如下所示: