В большинстве систем, над которыми я работал, ширина char
составляет 1 байт, поэтому char[]
или char*
- это байтовый массив.
В большинстве других языков, таких как Java, строковый тип данных позаботится о том, чтобы в определенной степени заботиться о таких понятиях, как кодирование, используя кодировку, например UTF-8. В С это не так. Если бы я прочитал строку UTF-8, содержимое которой включало многобайтовые значения, мои символы были бы представлены двумя сегментами в массиве (или, возможно, больше).
Чтобы взглянуть на это с другой точки зрения, учтите, что все типы в C имеют фиксированную ширину для вашей системы (хотя они могут различаться в разных реализациях).
Таким образом, строка, с которой вы работаете , является байтовым массивом.
Следующий вопрос, наверное, как вы отображаете эти байты? Это довольно просто:
char* x = ???; /* some string */
unsigned int xlen = strlen(x);
int i = 0;
for ( i = 0; i < xlen; i++ )
{
printf("%x", x[i]);
}
Я не могу придумать причину, по которой вы хотели бы преобразовать этот вывод в двоичный, но это можно было бы сделать, если бы вы были так настроены.