Так что я пытаюсь сделать строку в двоичный метод в 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. –