声明二进制整数常量

时间:2013-11-20 00:14:29

标签: java binary integer

所以,我正在用Java实现DES(数据加密标准),并且需要将密钥声明为64位的二进制值,并且不知道如何执行此操作。有谁可以帮助我?

我想说的是这样的:int = K 000100110011010001010111011110011001101110111100110111111110001;

然而,IDE总是发出错误声,表示它是一个非常大的整数。

2 个答案:

答案 0 :(得分:2)

如果您使用的是Java 7或更高版本,则可以通过在您的值前加上“0b”来指定二进制常量,例如:

long value = 0b000100110011010001010111011110011001101110111100110111111110001L;

如果您无法使用该语言功能,则可以使用十进制,八进制或十六进制表示法。如果您只是声明常量,可以使用http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html等在线工具,或者您最喜欢的计算器,转换为Java识别的基数。

例如:

long value = 691913582662545393L;

或者:

long value = 0x99A2BBCCDDE6FF1L;

您可能希望通过描述该值在评论中的含义来澄清:

// binary: 000100110011010001010111011110011001101110111100110111111110001
long value = 0x99A2BBCCDDE6FF1L;

正如您在上面的示例中所注意到的,您需要使用long并将L后缀添加到常量中。在Java中,int是32位,long是64位。 L后缀指定long字面值,如果没有它,则为int,且值太大。

P.S。以“0”开头的整数文字(但不是“0x”或“0b”)被解释为八进制。您最初尝试指定的常量被解释为一个非常大的八进制数。

答案 1 :(得分:2)

将0b放在你的号码前面告诉Java它是二进制的(仅适用于Java 7及更高版本)。否则,转换为十六进制。