如何在 Java 中以尽可能少的位存储整数

How to store integer in fewest bits possible in Java

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

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

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

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

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

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

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

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

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