GCC 在编译下面的代码时会出错。注释的两行而不是另一行or和shift行,但我不确定铸件是否必要和真实。
错误是这样的:二进制的无效操作数 | (有 'char*' 和 'int')
谢谢。
void bits2byte(int *bits, char *byte) {
byte = 0;
int i;
for (i = 0; i<8; i++) {
if (bits[i] == 1) {
byte = byte | 0x01;
// byte = (char*)((int)byte | 0x01);
}
if (i<7) {
byte = byte << 0x01;
// byte = (char*)((int)byte << 0x01);
}
}
}
int main() {
int input_bits[] = {1, 1, 0, 1, 0, 0, 1, 1};
char output_byte;
bits2byte(input_bits, &output_byte);
}
编辑:我知道这是一个通过引用的问题。我正在尝试修改字节。我希望该函数将位转换为字节。实际上,我首先按照所有回答者/评论者建议的方式编写了它,但是http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom中的参考传递示例.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr233.htm 让我很困惑。