編譯下面的代碼時,GCC給出錯誤。評論兩行,而不是其他或和轉變行工作,但我不知道如果鑄件是必要的和真實的。char *上的按位運算*
錯誤是:無效的操作數爲二進制| (有'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中的參考例子通過了我的想法。
是您的目標修改字節或字節的地址?你現在正在做後者(包括,在註釋掉的線路中,通過箍環讓編譯器讓你這樣做),我懷疑你想做前... – jimwise
你知道你在做所有關於字節地址的工作都不是自己的字節? –