如何从数组中读取单个位?

Jak*_*ake 5 c++ binary

让我们说我有一个动态分配的数组.

int* array=new int[10]
Run Code Online (Sandbox Code Playgroud)

即10*4 = 40字节或10*32 = 320位.我想读取第30个字节或第242个位的第2位.最简单的方法是什么?我知道我可以使用数组[30]访问第30个字节,但访问单个位更加棘手.

Eri*_*rik 6

bool bitset(void const * data, int bitindex) {
  int byte = bitindex / 8;
  int bit = bitindex % 8;
  unsigned char const * u = (unsigned char const *) data;
  return (u[byte] & (1<<bit)) != 0;
}
Run Code Online (Sandbox Code Playgroud)