在 JavaScript 中,每当您执行按位运算时,例如x << 2
,在实际发生移位之前,64 位浮点表示形式会转换为 32 位无符号整数。我有兴趣将这种转换应用于实际的、未改变的 IEEE 754 位表示。
这怎么可能?
您可以尝试先将 JSNumber 转换为字节/整数,然后自行移动结果。
使用主要浏览器最新版本中可用的 TypedArray 内容:
var f = new Float64Array( 1 ); // creating typed array to contain single 64-bit IEEE754
f.set( [ 1.0 ], 0 ); // transferring JSNumber for untyped array to first element of typed one
var d = new DataView( f.buffer ); // creating raw view on content in typed array
var w1 = d.getUint32( 0 ); // accessing bytes 0 to 3 of typed array
var w2 = d.getUint32( 4 ); // accessing bytes 4 to 7 of typed array
之后你可以将 32 位字移入w1
and w2
自己单独将低字中的高 2 位传送到高字的低 2 位。
可以通过使用第二个参数来控制字节序d.getUint32()
.
阅读更多:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays
只是为了确保贝尔吉的评论得到正确认可。我所有的代码可能会简化为单行,如下所示:
var d = new Uint32Array( new Float64Array( [1.0] ).buffer );
d[0]
and d[1]
那么适合访问包含的 32 位字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)