Я знаю, что этот вопрос кажется знакомым с этим Conversion of Char to Binary in C, но не совсем то же самое. Я преобразовываю массив символов в двоичные целые числа. В качестве второго шага я пытаюсь объединить их в массив целых чисел. Я преобразовываю целые числа обратно в символы, чтобы я мог их конкатенировать. Сценарий работает нормально, но по какой-то причине я не могу понять, когда я печатаю всю строку, в начале строки создается непечатаемый символ.Как преобразовать массив символов в двоичный массив на языке C
Пример кода:
#include <stdio.h>
#include <string.h>
int main(void) {
char *temp;
char str[2];
char final[32];
for (temp = "LOCL"; *temp; ++temp) {
int bit_index;
for (bit_index = sizeof(*temp)*8-1; bit_index >= 0; --bit_index) {
int bit = *temp >> bit_index & 1;
printf("%d ", bit);
snprintf(str, 2, "%d", bit);
printf("This is test: %s\n",str);
strncat(final , str , sizeof(final));
}
printf("\n");
}
printf("This is the array int: %s\n",final);
return 0;
}
Может кто-то помочь мне понять, где я неправильно?
Заранее благодарим за внимание и время, чтобы помочь мне.
Вы знаете относительный приоритет '' >> и '&' в '* Темп >> bit_index & 1'? Знает ли компилятор? Вы оба согласны? Я настоятельно рекомендую использовать круглые скобки в интересах тех, кто приходит после, даже если вы сразу знаете ответ. Отдельно, возможно, вам следует показать вывод, который вы получаете, и нужный результат. Это может облегчить людям помощь вам. –
Обратите внимание, что вы сообщаете 'strncat()', что это нормально, чтобы записать символы 'sizeof (final)' после окончания любой строки, уже сохраненной в 'final'. Интерфейс 'strncat()' еще хуже, чем интерфейс 'strncpy()'; очень сложно получить код правильно, и вы должны знать, как долго строка в целевой, прежде чем вы сможете сказать, сколько места осталось, что действительно делает ее бессмысленной (вы можете использовать 'memmove()' или ' memcpy() 'или' strcpy() 'или, возможно,' strncpy() 'вместо). Я бы забыл, что 'strncpy()' существует - я только работаю с ним в Stack Overflow, когда люди спрашивают. –
Эта строка: окончательный символ [32]; должен быть char final [32] = {'\ 0'}; поэтому строка всегда заканчивается нулем. – user3629249