在我脑海中,我写了一个
set_bitand
get_bit函数,它可以使用字节数组和数组中的位偏移量,并使用一些位扭曲来设置/获取数组中的适当位。像这样的东西(用C语言编写,但希望您能理解):
// sets the n-th bit in |bytes|. num_bytes is the number of bytes in the array// result is 0 on success, non-zero on failure (offset out-of-bounds)int set_bit(char* bytes, unsigned long num_bytes, unsigned long offset){ // make sure offset is valid if(offset < 0 || offset > (num_bytes<<3)-1) { return -1; } //set the right bit bytes[offset >> 3] |= (1 << (offset & 0x7)); return 0; //success }//gets the n-th bit in |bytes|. num_bytes is the number of bytes in the array// returns (-1) on error, 0 if bit is "off", positive number if "on"int get_bit(char* bytes, unsigned long num_bytes, unsigned long offset){ // make sure offset is valid if(offset < 0 || offset > (num_bytes<<3)-1) { return -1; } //get the right bit return (bytes[offset >> 3] & (1 << (offset & 0x7));}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)