DEX 格式的无符号类型有:
ubyte 8-bit unsigned int
ushort 16-bit unsigned int, little-endian
uint 32-bit unsigned int, little-endian
ulong 64-bit unsigned int, little-endian
uleb128 unsigned LEB128, variable-length (see below)
uleb128p1 unsigned LEB128 plus 1, variable-length (see below)
https://source.android.com/devices/tech/dalvik/dex-format.html
然而,由于 Java 8 和 Android 的 dx 以及 Jack 和 Jill 编译器仍然不支持 Java 8,因此才引入了无符号类型。那么为什么要引入这些类型呢? Java 代码是否有机会发出使用这些类型的指令?
最佳答案
这些类型是针对 DEX 文件格式本身的。 header 中的元数据(包含方法计数和文件偏移量等内容)与任何特定语言无关。
此外,DEX 还可以用于非 Java 语言。
关于android - Java 中没有无符号类型,为什么 DEX 可执行文件中有无符号类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29237552/