java - 为什么 Java 中的字节表示以十进制存储数据?

标签 java jvm

我正在调试一个问题,我从字符串的二进制表示创建了一个字节数组,如下所示。

  1. 虽然调试数组只是为了查看它是如何存储的,但我可以看到它们在内部存储为小数。这是为什么?
  2. 当它被解释为字节码时,我假设它会被转换为二进制。那么为什么不首先以二进制形式存储。
 String[] binArray = {"10101","11100","11010","00101"};
    byte[]bytes = new byte[binArray.length];
    for (int i=0; i< binArray.length;i++){
        bytes[i] = Byte.parseByte(binArray[i],2);
}

我可能在这里遗漏了一些东西。因此请求您的指导。

最佳答案

这似乎是一个非常普遍的误解。

在某种意义上,所有数据都是“以二进制形式”存储的。特别是整型数值,如byteshortint等,在内部都是以二进制形式存储的。此内部表示称为 Two's complement form .

(对于 float ,表示有点复杂:它是 IEEE 754 表示 - 尽管如此,它们仍以二进制形式存储)

可能导致您提出问题的关键问题是:当您只是打印一个数字,或将它们转换为一个字符串时,使用

System.out.println(someByte);

String s = String.valueOf(someByte);

然后默认打印小数形式。主要是因为这是人类最“自然”和最易读的形式。

您可以将字节传递给 Integer.html#toBinaryString创建其二进制表示的字符串表示:

System.out.println(Integer.toBinaryString(someByte));

关于java - 为什么 Java 中的字节表示以十进制存储数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36109103/

相关文章:

tomcat - IntelliJ Idea tomcat 热插拔失败 : schema change not implemented Operation not supported by VM

java - 内存不足错误 : Java heap space error when start solr

java - Servlet 如何处理超出可用 RAM 的字节数?

java - 静态变量加载过程

java - 即使用 JScrollPane 包装表格后,列标题也不会显示

java - 下载 GAE 源代码时出现 400 Bad Request 错误

java - 如何修复 ArrayList 类型的类型不匹配错误?可能的多维数组?

jvm - 如何找到 OpenJDK JVM(热点)代码中包含 main() 方法的类?

java - 从属性中伪装客户端和名称

java - 从嵌入式 Jetty 中的备用路径提供静态文件