我有一个字节数组myByteArray[82]
我想将这个数组中的37位准确地更改为补码值。即。如果bit0具有“ 1”,我想将其更改为“ 0”。我需要先更改37个此类位,以在此字节数组中引入错误。
请建议如何做
最佳答案
尚不清楚您要做什么。我最好的理解是,您有一个82个字节的数组,并且想要反转数组的最低37位。由于一个字节是8位,因此您可以执行以下操作:
byte[] myByteArray = new byte[82];
// invert lowest 32 bits, 8 at a time
for (int i = 0; i < 4; ++i) {
myByteArray[i] = (byte)(~myByteArray[i]);
}
// invert next five bits
myByteArray[4] = (byte) (
(myByteArray[4] & 0xE0) // top 3 bits unchanged
|
((~myByteArray[4)) & 0x1F) // bottom 5 bits inverted
);