所以,我正在用Java实现DES(数据加密标准),并且需要将密钥声明为64位的二进制值,并且不知道如何执行此操作。有谁可以帮助我?
我想说的是这样的:int = K 000100110011010001010111011110011001101110111100110111111110001;
然而,IDE总是发出错误声,表示它是一个非常大的整数。
答案 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及更高版本)。否则,转换为十六进制。