0

就像在主题中。我正在编写必须尽可能多地保存 RAM 的应用程序。我想将字节分成两部分,每部分 4 位(数字从 0 到 15) - 如何保存并稍后读取这些值?

4

2 回答 2

4

如果您想要在一个字节中存储 2 个数字(范围 0-15),这里有一个关于如何保存和恢复它们的示例。请注意,您必须确保您的原始数字在允许的范围内,否则这将不起作用。

    // Store both numbers in one byte
    byte firstNumber = 10;
    byte secondNumber = 15;
    final byte bothNumbers = (byte) ((firstNumber << 4) | secondNumber);

    // Retreive the original numbers
    firstNumber = (byte) ((bothNumbers >> 4) & (byte) 0x0F);
    secondNumber = (byte) (bothNumbers & 0x0F);

另外值得注意的是,如果你想尽可能多地节省内存,你不应该从 Java开始。JVM 已经自己消耗内存了。本地语言更适合这一要求。

于 2013-07-18T11:13:21.507 回答
3

你可以得到较低的位

byte lower = b & 0xF; 

高位为

byte higher = (b >> 4) & 0xF; 

回到一个字节

byte b  = (byte) (lower + (higher << 4));
于 2013-07-18T11:04:13.177 回答