将两个Uint32Array值转换为Javascript编号
发布时间:2020-12-14 04:38:36 所属栏目:Windows 来源:网络整理
导读:我找到了一个来自 here的代码,它将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] ];
|
我找到了一个来自
here的代码,它将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] ];
}
如何将返回值转换回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) 解决方法
那段代码很丑陋.使用
function DoubleToIEEE(f) {
var buf = new ArrayBuffer(8);
var float = new Float64Array(buf);
var uint = new Uint32Array(buf);
float[0] = f;
return uint;
}
如果您想要一个实际的Array而不是Uint32Array(在大多数情况下不应该有所区别),请添加一个 function DoubleToIEEE(f) {
// use either
return new Uint32Array(Float64Array.of(f).buffer);
return Array.from(new Uint32Array(Float64Array.of(f).buffer));
return Array.from(new Uint32Array((new Float64Array([f])).buffer));
}
逆将只是将输入写入uint槽并返回float [0]值: function IEEEToDouble(is) {
var buf = new ArrayBuffer(8);
var float = new Float64Array(buf);
var uint = new Uint32Array(buf);
uint[0] = is[0];
uint[1] = is[1];
return float[0];
}
这可以缩短为 function IEEEToDouble(is) {
return (new Float64Array(Uint32Array.from(is).buffer))[0];
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Vagrant将无法在Windows CMD上启动(Errno :: EACCES)
- 创建客户端证书 – Windows
- 无法将NuGet软件包“Microsoft ASP.NET MVC”从版本4.0.207
- windows – “(.hg not found)”从cygwin托管的存储库通过s
- 检测文件是否在Windows中打开的程序化方法是什么?
- active-directory – 如何找出每天锁定特定AD帐户的原因?
- MSBuild任务读取dll的版本
- windows-server-2012 – 使用Powershell将Windows Server防
- cpu-architecture – 在32位Windows下使用Amd64指令的轻量级
- 恶意代码分析实战-启动一个恶意的DLL
推荐文章
站长推荐
热点阅读
