我的数字低于16,我希望以尽可能小的方式存储它们。我目前将整数转换为一个字节,但我不需要整个字节。我想我只需要4位来保存我的号码。 我想尽量少用一个字节。
byte solutionLength = (byte) myArray.length;
return solutionLength;
myArray.length
总是小于12。
如何使用少量位来存储我的变量solutionLength
?
答案 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.您需要创建一个按索引计算值的类。