преобразование строки десятичных значений символов ascii в двоичные значения - PullRequest
1 голос
/ 27 декабря 2011

Мне нужна помощь в написании программы, которая преобразует полные предложения в двоичный код (ascii -> decimal -> binary) и наоборот, но у меня возникают проблемы с этим. Сейчас я работаю над ascii-> binary.

Символы ascii имеют десятичные значения. a = 97, b = 98 и т. Д. Я хочу получить десятичное значение символа ascii и преобразовать его в двоичное или двоичное десятичное число, например 10 (в десятичном) в двоичном виде просто:

10 (decimal) == 1010 (binary)

Итак, десятичное значение ascii для a и b:

97, 98

Это в двоичном виде (плюс символ пробела, который 32, спасибо):

11000011000001100010 == "a b"

11000011100010 == "ab"

Я написал это:

int c_to_b(char c)
{
    return (printf("%d", (c ^= 64 ^= 32 ^= 16 ^= 8 ^= 4 ^= 2 ^= 1 ^= 0));
}

int s_to_b(char *s)
{
    long bin_buf = 0;

    for (int i = 0; s[i] != '\0'; i++)
    {
        bin_buf += s[i] ^= 64 ^= 32 ^= 16 ^= 8 ^= 4 ^= 2 ^= 1 ^= 0;
    }

    return printf("%d", bin_buf);
}
<ч />

примеры кода

main.c

int main(void)
{
    // this should print out each binary value for each character in this string
    // eg: h = 104, e = 101
    // print decimal to binary 104 and 101 which would be equivalent to:
    // 11010001100101
    // s_to_b returns printf so it should print automatically
    s_to_b("hello, world!");
    return 0;
}

Для уточнения, цикл for во втором фрагменте проходит по каждому символу в массиве символов, пока не достигнет нулевого терминатора. Каждый раз, когда он считает персонажа, он выполняет эту операцию. Я использую правильную операцию?

1 Ответ

2 голосов
/ 27 декабря 2011

Может быть, вы хотите что-то вроде

void s_to_b(const char*s)
{
  if (s != NULL) {
     while (*s) {
        int c = *s;
        printf(" %d", c);
        s++;
     }
     putc('\n');
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...