我不能确定bool到底占几位。所以,献给出我的解释,如果bool变量只占1为,而char占8位
void myDES::ByteToBit(bool *Out, const char *In, int bits)
{
union char2byte{
bool b[8];
char c;
}char2byte;
for(int i=0; i<bits; ++i){
char2byte.c=In[i];
memcpy(Out,8,char2byte.b);
Out += 8;
}
}
C语言里面89年的标准里面是没有bool类型的, C标准到了99年的版本才加入bool类型的。微软的VS系列编译器都不支持C99标准,也就是说没有bool类型的。
C++里面是有bool类型的。0为false, 非0为true.
还有,这位同学的C or C++学的不精,操作位移的时候,要使用unsigned type, 标准是这样说的
The result of E1 >> E2 is E1 right-shifted E2 bit positions 。。。。If E1 has asigned type and a negative value, the resulting value is implementation-defined.