Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字节数组实际长度_Java_Arrays_Bytearray - Fatal编程技术网

Java 字节数组实际长度

Java 字节数组实际长度,java,arrays,bytearray,Java,Arrays,Bytearray,字节数组的实际长度是多少?例如: int x = 123 equals to byte[] b = 0111 1011 现在,如果我想计算出所说整数的长度,我会使用b.length,但从我收集的数据来看,长度只能是8的倍数,因为每个字节都代表一个强制数字。是字节数组的情况还是我遗漏了什么?您可以使用不以整数值表示字节的字节数组 因此,它们的长度(通过获取数组的length公共字段推断)完全是任意的 据我所知,长度只能是8的倍数 我想你对位和字节有点困惑。一个字节是8位。字节数组的.length

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

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

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

您可以使用不以整数值表示字节的
字节数组

因此,它们的长度(通过获取数组的
length
公共字段推断)完全是任意的

据我所知,长度只能是8的倍数

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

内存中的int总是4字节,即32位。示例int 123具有以下位表示:

0000 0000   0000 0000   0000 0000   0111 1011
字节数组的长度可以是任意整数,因此
b.length
是您创建它的大小。它不需要整数长度,但如果要在整数和字节数组之间转换,则始终存储整数会更简单。这意味着,将这些字节数组设置为4字节长的倍数

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

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