java - 字节数组实际长度

标签 java arrays

字节数组的实际长度是多少?例如:

int x = 123 equals to byte[] b = 0111 1011

现在,如果我想计算出所述整数的长度,我会使用 b.length,但根据我收集的信息,长度只能是 8 的倍数,因为每个字节都代表一个强制数字。字节数组就是这种情况还是我遗漏了什么?

最佳答案

from what I gather, length can be only multiples of 8

我认为您对位和字节有点困惑。一个字节是8位。字节数组的 .length 是其以字节为单位的长度,它始终是整数字节,是 8 位的倍数。

内存中的int始终是4个字节,即32位。您的示例 int 123 具有以下位表示形式:

0000 0000   0000 0000   0000 0000   0111 1011

字节数组的长度可以是任意整数字节,因此 b.length 是您创建它的任何大小。它不需要是整数个整数长,但如果你想在整数和字节数组之间进行转换,如果你总是存储整个整数,会更简单。这意味着,使这些字节数组的长度为 4 字节的倍数。

如果您只是想知道以二进制形式写入的数字的长度,最简单的方法是将其转换为字符串并测量其长度。方法Integer.numberOfLeadingZeros可能对您也有用。

int x = 123;
System.out.println(Integer.toBinaryString(x)); // 1111011
System.out.println(Integer.toBinaryString(x).length()); // 7
System.out.println(x == 0 ? 1 : (32 - Integer.numberOfLeadingZeros(x))); // 7

关于java - 字节数组实际长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36742521/

相关文章:

java - JPA缓存如何刷新外部修改的实体?

java - 对数鼠标移动

java - 使用Java 8 Streams完成消除循环

javascript - 检查多维对象是否为空

javascript - 从 Chrome 本地存储保存和加载数据

java - 在 TreeSet 中,基于不同属性的自定义对象的排序和唯一性

java - 从位图android的边缘创建路径

javascript - Jquery:获取数字数组中的最大值

c - 我如何处理 C 中的递归和数组?

c - 在 C 的条件语句中使用数组元素时出错