【问题标题】:Binary representation of Number in IEEE double-precision formatIEEE 双精度格式数字的二进制表示
【发布时间】:2012-09-17 21:25:10
【问题描述】:

我需要 Number 实例的二进制表示。首先,我尝试了带有参数2 的 Number 类的toString() 方法。结果是 14 位。 (对于数字 9878.658456)然后,我尝试将 Number 实例添加到 ByteArray,如下所示:

    var b:ByteArray = new ByteArray();
    var n :Number = 9878.658456;
    trace(uint(n).toString(2));
    b.writeDouble(n);

然后我尝试读取 8 个字节:

    trace((b.readByte() ).toString(2));
    trace((b.readByte() ).toString(2));
    trace((b.readByte() ).toString(2));
    trace((b.readByte() ).toString(2));
    trace((b.readByte() ).toString(2));
    trace((b.readByte() ).toString(2));
    trace((b.readByte() ).toString(2));
    trace((b.readByte() ).toString(2));

结果非常有趣,有一些我不知道该怎么处理的二进制值。我想我还没有理解 toString 方法,API 解释对我来说还不够。对检索 Number 实例的 IEEE 表示有帮助吗?

【问题讨论】:

标签: actionscript-3 binary numbers


【解决方案1】:

最好的解决方案是您自己的解决方案。我想出了这个:

    var b:ByteArray = new ByteArray();
    var n :Number = 9878.658456;
    b.writeDouble(n);
    b.position=0;
    trace((b.readByte() & 0xFF).toString(2));
    trace((b.readByte() & 0xFF).toString(2));
    trace((b.readByte() & 0xFF).toString(2));
    trace((b.readByte() & 0xFF).toString(2));
    trace((b.readByte() & 0xFF).toString(2));
    trace((b.readByte() & 0xFF).toString(2));
    trace((b.readByte() & 0xFF).toString(2));
    trace((b.readByte() & 0xFF).toString(2));
    trace((b.readByte() & 0xFF).toString(2));

你可以从here查看结果,效果很好。

【讨论】:

  • 你为什么要使用readByte()的singed版本以及and255的目的是什么?
  • 我只取最后 8 位,这就是我使用 255 的原因。
  • 但是 readByte() 只返回 8 位... Actionscript 没有 byte 类型,所以它要么是 uint 要么是 int
  • 我将bytes 存储在ints 中。当我想使用时,我将ANDint 值与0xFF 一起考虑仅考虑最后8 位。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多