如何修改字节数组元素中的单个位?

zar*_*cel 1 java

我有一个字节数组,每个字节保存一个8位的字节.让我们说我想修改数组的第一个元素的第5位而不改变其他任何东西.有没有简单的方法呢?

Lou*_*man 5

如果你想设置它,做

bytes[0] |= (byte) (1 << 5);
Run Code Online (Sandbox Code Playgroud)

... OR是字节数组中第一个元素,二进制表示为1,向左移动5位......这与设置第5位相同.

如果要清除第5位,请执行

bytes[0] &= (byte) ~(1 << 5);
Run Code Online (Sandbox Code Playgroud)