所以我想做一个字符串在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. –