webdisplays/src/main/java/net/montoyo/wd/utilities/NibbleArray.java
2023-11-11 00:06:56 -05:00

46 lines
989 B
Java

/*
* Copyright (C) 2018 BARBOTIN Nicolas
*/
package net.montoyo.wd.utilities;
public final class NibbleArray {
private final byte[] data;
public NibbleArray(int count) {
if ((count & 1) != 0)
count++;
data = new byte[count >> 1];
}
public NibbleArray(byte[] d) {
data = d;
}
public int get(int idx) {
if ((idx & 1) == 0)
return (data[idx >> 1] >> 4) & 0x0F; //MSB
else
return data[idx >> 1] & 0x0F; //LSB
}
public void set(int idx, int val) {
val &= 0x0F;
if ((idx & 1) == 0) {
idx >>= 1;
data[idx] = (byte) ((data[idx] & 0x0F) | (val << 4)); //MSB
} else {
idx >>= 1;
data[idx] = (byte) ((data[idx] & 0xF0) | val); //LSB
}
}
public byte[] copyBytes() {
byte[] ret = new byte[data.length];
System.arraycopy(data, 0, ret, 0, data.length);
return ret;
}
}