什么大小的整数保证是4个字节?

时间:2014-11-16 13:55:50

标签: byte

使用byte[]转换为ByteBuffer.allocate(int_value).array()时,整数必须在Java中有多大才能长达4个字节?

我问这个因为我在我正在进行的游戏中使用Integers for Entity Ids并且生成4字节ID比使用字节填充每个byte[]要便宜得多保持0x00

的值

2 个答案:

答案 0 :(得分:2)

据我了解你,你在这里做出错误的假设。 allocate()array()没有完成转换/截断/扩展 - 您只需分配int_value个字节,并从bytes[int_value]获取array()大小的数组如果支持array(),请致电。 https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html#allocate%28int%29

要使数组长4个字节,只需使用ByteBuffer.allocate(4)即可。然后,如果需要,使用putInt(somevalue),并获得用给定int填充的4字节缓冲区,因为的大小是Java int (32-比特,根据https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html),无论其值如何。

注意:你可能从错误的角度接近这个,顺便说一下。最好使用 big 缓冲区,为您提供连续的内存区域,并根据某些指标简单地对其进行细分,例如:对于4字节(int)单元,分配4 * totalInts然后,例如得到(4 * i)等,或者使用批量获取。

答案 1 :(得分:1)

Java中的整数(基元int)应始终为4个字节,因此类型不是动态的。请参阅Primitive Data Types

但是,如果您的目的只是创建一个空字节数组,那么只需创建它。因此在Java中不需要用零填充它,字节的默认值是0。

如果要确保字节数组的长度为4,则可以使用

ByteBuffer.allocate(4).putInt(int_value).array();