【问题标题】:Xor Different between Java and Flash ActionscriptJava 和 Flash Actionscript 的异或异
【发布时间】:2012-07-28 14:17:11
【问题描述】:

我目前正在编写一个 Java 来模拟 Flash ActionScript 之类的返回值。

这是两个应用程序返回不同值的问题。

在 ActionSript 3.0 下

k = 942945590;
z = 3180323136;

trace(k ^ z);

结果将返回“-2051287946”

当我尝试用 Java 来做时。

    long k = 942945590L;
    long z = 3180323136L;
System.out.println (k ^ z);

结果返回正值而不是“2243679350”

知道如何解决这个问题吗?

谢谢

【问题讨论】:

    标签: java actionscript xor


    【解决方案1】:

    结果相同,但表示形式不同,因为您的 Java longs 是 64 位的,而在 Actionscript 中您可能使用的是 32 位算术:

    -2051287946 ==         0x85BBD476 (32 bit signed 2's complement)
     2243679350 == 0x0000000085BBD476 (64 bit signed 2's complement)
    

    如果您希望结果匹配,请在 Java 代码中使用 int 而不是 long

    【讨论】:

      【解决方案2】:

      看起来 ActionScript 正在以 32 位算术进行计算,或者更有可能的是,trace() 语句正在将结果格式化为 32 位。

      【讨论】:

        猜你喜欢
        • 2017-08-16
        • 2014-05-10
        • 2013-05-03
        • 2011-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多