这种号码是什么?

时间:2013-12-28 00:40:54

标签: java types numbers

我正在浏览TextSecure的来源,并好奇这个作业在line 80上的作用。

从存储库:

  public static final int REQUEST_CODE = 0x0ba7c0de; // get it?

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

1 个答案:

答案 0 :(得分:10)

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

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

public static final int REQUEST_CODE = 195543262;

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

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

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