由于 javascript 没有原生的 Long 类型(就像 Java 一样),我目前正在使用这个类,它应该模拟 Java 的 Long 类型。但是,我得到了奇怪的输出。
- Java Long1:3837363534333231,JS Long1:3132333435363738
- Java Long2:3635343332313039,JS Long2:3930313233343536
当我对它们进行异或运算时:我得到:
- JavaXor:e02020606020208,JSXor:80202060602020e
这些值是通过调用获得的:
- Java: Long.toHexString(var);
- JS:Long.toString(16)(这是goog.math.Long类的一个方法)
您会注意到 JS 表示(1 和 2)向后出现,每两个字符移动一次(因为十六进制表示 2 个字符,与它们的 Java 等效项相比。XOR 结果有点不同,因为它是向后的,但是字符-换字符。
难道我做错了什么?这是正常行为吗?谁能猜出为什么会发生这种情况?