所以我想做一個字符串在C二進制方法這是我到目前爲止的代碼:字符數組二進制數組不工作
int main(int argc, char **argv) {
convertStringToBits("hello");
}
char *convertStringToBits(char **string) {
int i;
int stringLength = strlen(string);
int mask = 0x80; /* 10000000 */
char charArray[stringLength * 8]; //* 8 for char bits?
for(i = 0; i < (sizeof(string)/sizeof(char)) + 1; i++) {
mask = 0x80;
char c = string[i];
while(mask > 0) {
printf("%d", (c & mask) > 0);
mask >>= 1; /* move the bit down */
//add to char array
}
printf("\n");
}
return charArray;
}
的預期輸出:hello
應該是:
01101000
01100101
01101100
01101100
01101111
,但我得到這樣的:
01101000
01101111
01100011
00100000
01011011
我也想返回字符數組,但我似乎無法做到這一點。
感謝您的幫助!
'的sizeof(char)的'始終爲1 –
@iharob並非所有系統上,我不認爲(如Raspbian) – madcrazydrumma
這是強制性的按標準。它必須是1.是否CHAR_BITS是8,這是別的,但sizeof(char)必須是1. –