我正在调试一个问题,我从字符串的二进制表示创建了一个字节数组,如下所示。
- 虽然调试数组只是为了查看它是如何存储的,但我可以看到它们在内部存储为小数。这是为什么?
- 当它被解释为字节码时,我假设它会被转换为二进制。那么为什么不首先以二进制形式存储。
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);
}
我可能在这里遗漏了一些东西。因此请求您的指导。
最佳答案
这似乎是一个非常普遍的误解。
在某种意义上,所有数据都是“以二进制形式”存储的。特别是整型数值,如byte
、short
、int
等,在内部都是以二进制形式存储的。此内部表示称为 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/