如何在Java中以最少的位存储整数

时间:2017-06-30 02:51:35

标签: java byte bits

我的数字低于16,我希望以尽可能小的方式存储它们。我目前将整数转换为一个字节,但我不需要整个字节。我想我只需要4位来保存我的号码。 我想尽量少用一个字节。

byte solutionLength = (byte) myArray.length;
return solutionLength;

myArray.length总是小于12。 如何使用少量位来存储我的变量solutionLength

2 个答案:

答案 0 :(得分:4)

数据类型低于一个字节的大小是不可能的。如果你要存储多个数字,你可以做一个技巧:在一个字节中存储两个4位值。

byte storage = (byte) (((byte)myArray.length << 4) | (byte)myArray2.length);

这里将两个数字存储在一个字节中。 要访问它们,请尝试:

byte myArrayLength = (byte) ((storage & 0xf0) >> 4);
byte myArrayLength2 = (byte) (storage & 0x0f);

但是,通过避免类型转换,整数将是更好的解决方案

答案 1 :(得分:3)

您可以使用字节数组,每个字节将包含两个值 - 一个在高4位,另一个在低位用于位。例如。 0x1F保持1和F.您需要创建一个按索引计算值的类。