Мне нужна помощь в написании программы, которая преобразует полные предложения в двоичный код (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
во втором фрагменте проходит по каждому символу в массиве символов, пока не достигнет нулевого терминатора. Каждый раз, когда он считает персонажа, он выполняет эту операцию. Я использую правильную операцию?