如何在bytes []数组中存储一系列位? 更详细:我有一个数组
byte[] bytes;
如何在数组的单个字节中存储单个值(0和1)? 我正在寻找类似的东西:
bit[] bits = new bit[8];
bits[0] = 1;
bits[3] = 1;
bytes[3] = bits[];
我希望这是有道理的。感谢
答案 0 :(得分:1)
void setBit(int[] array, int index, boolean value) {
int x = index / 32;
int y = index % 32;
int mask = 1 << y;
if (value) {
array[x] |= mask;
}
else {
array[x] &= (0xFFFFFFFF ^ mask);
}
}
boolean getBit(int[] array, int index) {
int x = index / 32;
int y = index % 32;
int mask = 1 << y;
return (array[x] & mask) != 0;
}
答案 1 :(得分:0)
布尔值可用于表示一个位,但它会占用更多内存。您可以使用bitwise运算符来节省内存,这是一个示例:
int n = 0;
n |= 1 << 1; // Set bit 1 to true, n is 2
n |= 1 << 3; // Set bit 3 to true, n is 10
bool b0 = n & (1 << 3) > 0; // True
n &= 1 << 3; // Set bit 3 to false, n is 2
bool b1 = n & (1 << 1) > 0; // True
bool b2 = n & (1 << 2) > 0; // False
bool b3 = n & (1 << 3) > 0; // False