将两个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
推荐文章
站长推荐
热点阅读