例如下面这个例子:
char name[100] = "grayVTouch";
// 低位多出2位(这种做法是错误的,因为低位多出两位,高位却丢失了两位,导致数据不完整)
// 如何在已有数据上,不丢失原有数据的情况下插入位??
*name <<= 2;
// 设置第一位、第二位值为 1
// 第一位表示性别,0 女,1 男
// 第二位表示长幼,0 幼,1 长
// 然后 name 表示的含义就是,姓名叫做 grayVTouch,性别男,年长。
// 掩码
int mask1 = 0x1;
int mask2 = 0x2;
// 设置第一位
*name |= mask1;
*name |= mask2;
// 现在要获取第一位的值,怎么获取??
// 第二位的值,怎么获取??
// 如何除去插入的2位,获取原始的值??
0. 如何在已有数据上,不丢失原有数据的情况下插入位??
1. 现在要获取第一位的值,怎么获取??
2. 第二位的值,怎么获取??
3. 如何除去插入的2位,获取原始的值??
c++ std库里有个类bitset, 是专门做这个事的
这里有源码, 如果你一定要c, 可以看看这个
https://gcc.gnu.org/onlinedoc...
重点是left_shift和right_shift
字符串和bitset的转换可以看这里
http://blog.csdn.net/magicyan...