Как преобразовать неподписанный символ в двоичное представление - PullRequest
1 голос
/ 22 сентября 2019

Я пытаюсь преобразовать беззнаковые символы в их шестнадцатеричные значения ASCII, но в двоичном виде.

Например:

беззнаковый символ C в 0100 0011 (43)

Я могу перейти от шестнадцатеричного к двоичному, проблема сводится к тому, чтобы преобразовать символ в его шестнадцатеричное значение.

for (n = 0; n < 8; n++){
    binary[n] = (letter >> n) & 1;}

Я получаю неправильные значения, потому что буква вводится как собственное значение ASCII, а не как двоичная версия.шестнадцатеричного значения ASCII

1 Ответ

0 голосов
/ 23 сентября 2019

Я думаю, что вы выбираете биты один за другим просто отлично, вы просто получаете их в обратном порядке по сравнению с тем, что вы хотели.

Это работает:

#include <stdio.h>
int main() {
  unsigned char letter = 'C';
  int binary[8];
  for(int n = 0; n < 8; n++)
    binary[7-n] = (letter >> n) & 1;
  /* print result */
  for(int n = 0; n < 8; n++)
    printf("%d", binary[n]);
  printf("\n");
  return 0;
}

Бег, который дает01000011, который вы хотели.

...