位掩码0xaaaaaaaaaaaaaaaaL(16a's)在 kotlin 中超出或超出范围。如果我让 Android Sutdio 自动从 Java 转换,它会转换为-0x5555555555555556L,即101010101010101010101010101010101010101010101010101010101010110,它现在只有 63 位,末尾的 0110 已关闭。
0xaaaaaaaaaaaaaaaaL在 Java 中运行良好。我需要解释为什么它会出现-0x5555555555555556L在 kotlin 中。另外一个问题是kotlin如何表示负Long?为什么前面有-号?不是像Java中的2的补码吗?
我查看了文档https://kotlinlang.org/docs/basic-types.html#literal-constants,我知道 kotlin 支持十六进制语法。
我也尝试过 Unsigned Longval mask2: ULong = 0xaaaaaaaaaaaaaaaaL同样的问题。
提前致谢
可以使用Java的解析:
val x: Long = java.lang.Long.parseUnsignedLong("aaaaaaaaaaaaaaaa", 16)
println(x) // Outputs -6148914691236517206
Run Code Online (Sandbox Code Playgroud)
您可以在这里查看一些解释。
| 归档时间: |
|
| 查看次数: |
3115 次 |
| 最近记录: |