simplify put bit at index method

This commit is contained in:
REAndroid 2023-03-25 07:22:39 -04:00
parent d66eeea70a
commit ce4621d026

View File

@ -80,7 +80,7 @@ public class ByteArray extends BlockItem {
} }
return 0xff & b; return 0xff & b;
} }
public final void put(int index, int byteValue){ public final void putByte(int index, int byteValue){
put(index, (byte) byteValue); put(index, (byte) byteValue);
} }
public final void put(int index, byte value){ public final void put(int index, byte value){
@ -91,18 +91,11 @@ public class ByteArray extends BlockItem {
return ((get(byteOffset)>>bitIndex) & 0x1) == 1; return ((get(byteOffset)>>bitIndex) & 0x1) == 1;
} }
public void putBit(int byteOffset, int bitIndex, boolean bit){ public void putBit(int byteOffset, int bitIndex, boolean bit){
int val=get(byteOffset); int mask = 1 << bitIndex;
int left=val>>bitIndex; int add = bit ? mask : 0;
if(bit){ mask = (~mask) & 0xff;
left=left|0x1; int value = (get(byteOffset) & mask) | add;
}else { putByte(byteOffset, value);
left=left & 0xFE;
}
left=left<<bitIndex;
bitIndex=8-bitIndex;
int right=(0xFF>>bitIndex) & val;
val=left|right;
put(byteOffset, (byte) val);
} }
public final void putShort(int offset, int value){ public final void putShort(int offset, int value){
putShort(offset, (short) value); putShort(offset, (short) value);