Если у меня есть массив символов
unsigned char charBuff[5] = {'a','b','c','d', '\0'};
и я хочу получить 8-битное двоичное представление каждого из символов, как мне это сделать?
Чтобы напечатать двоичный эквивалент каждого символа массива, вы можете выполнить следующие шаги.
Шаг 1. Найдите количество элементов в заданном массиве символов.
unsigned char charBuff[5] = {1,2,3,4};
unsigned int numElem = sizeof(charBuff) / sizeof(charBuff[0]);
Шаг 2. Поверните цикл до numElem
раза. Например,
for(index = 0; index < numElem; index++)
{
}
Шаг 3: выберите индекс каждого массива символов и реализуйте функциональность, чтобы получить двоичный эквивалент каждого символа в массиве.
for(index = 0; index < numElem; index++)
{
/* select charBuff[index] and charBuff[index] is a single char i.e it can only 8 bits hence rotate inner loop 8 times */
for(subIndex = 0; subIndex < 8; subIndex++)
{
printf("%d", (charBuff[index]) >> subIndex & 1); /* it prints 0 or 1 */
}
printf(" "); /* Optional : print white space for readability after printing binary equivalent of charBuff[index] */
}
person
Achal
schedule
23.01.2020
char
уже является 8-битным значением. Так что не понятно, что вы имеете в виду. Не могли бы вы показать пример кода того, что вы пытаетесь сделать? - person kaylum   schedule 23.01.2020c
, где(' ' <= c <= '~')
, вы можете вывести двоичное представление с помощьюfor (i = CHAR_BIT - 1; i >= 0; i--) putchar ((c >> i) & 1 ? '1' : '0'); putchar ('\n');
. Вам нужно будет включитьlimits.h
дляCHAR_BIT
. - person David C. Rankin   schedule 23.01.2020