这种号码是什么?

kev*_*ins 1 java types numbers

我正在浏览TextSecure的来源,并好奇这个任务在第80行上做了什么.

从存储库:

  public static final int REQUEST_CODE = 0x0ba7c0de; // get it?
Run Code Online (Sandbox Code Playgroud)

我确定我在某个地方之前已经看过这个,但从来没有必要使用它,并且不太明白为什么会使用它.

Mic*_*rry 10

它是十六进制数(这由0x前缀表示- 在Java中以这种方式开始的任何文字都是十六进制数.)

在这种情况下,十进制等值将是195543262 - 所以它完全相同:

public static final int REQUEST_CODE = 195543262;
Run Code Online (Sandbox Code Playgroud)

这种方式还有其他几种替代表示 - 0作为前缀意味着数字是八进制,而自Java 7以来0b意味着它是二进制的.Hex是迄今为止使用最多的,因为八进制符号令人难以置信的混乱,二进制文字是后来添加的.

这很有用,因为有时在另一个数字库中定义文字更有意义 - 例如,当我处理原始字节流协议时,我会广泛使用十六进制,因为一个字节很容易用两个十六进制数字表示,所以它更容易以这种方式拆分它们时读取.(注意,从Java 7开始,您还可以在文字中添加下划线,以进一步简化为此上下文拆分.)

就这个特殊用途而言 - 看起来文字的确切值无关紧要,它只是作为一个笑话(leetspeak中的拼写条形码).