java - 声明二进制整型常量

标签 java binary integer

因此,我正在 Java 中实现 DES(数据加密标准),需要将 key 声明为 64 位的二进制值,但不知道如何执行此操作。有人可以帮助我吗?

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

但是,IDE 总是发出错误提示,说它是一个非常大的整数。

最佳答案

如果您使用的是 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 并且值会太大。

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

关于java - 声明二进制整型常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20084939/

相关文章:

java - WebService HTTPS调用的读取超时实现

java - 无法使用 Maven 执行 Junit5 测试

java - 查找双向链表中的最小元素不起作用

c++ - 如何为我的开源应用程序打包 Linux 二进制文件?

java - 如何检查路径中是否存在程序

c# - 我可以直接在 C# 中将存储为字符串的二进制文件写入二进制文件吗?

c - 下面的二叉搜索树插入方法有什么问题?

Objective-C:将 int 返回到 BOOL 方法

c - c中的二进制整数到整数数组

ruby-on-rails - rails : Converting currency from form to big decimal