Как получить двоичное представление в шестнадцатеричном значении символа - PullRequest
0 голосов
/ 18 августа 2010

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

Например, для данного символа у него есть двоичное представление, которое является однимбайт, например, 01010100, который равен 0x54 ..... мне нужен массив char 54.

Ответы [ 3 ]

4 голосов
/ 18 августа 2010

На самом деле это будет:

char c = 84;
char result[3];
sprintf(result,"%02x",c);
1 голос
/ 18 августа 2010

Это все очень легко читается: -)

#define H(x) '0' + (x) + ((x)>9) * 7
char c = 84;
char result[3] = { H(c>>4), H(c&15) };
0 голосов
/ 18 августа 2010

Следующий код, использующий snprintf(), должен работать:

#include <stdio.h>
#include <string.h>

int main()
{
  char myChar = 'A'; // A = 0x41 = 65
  char myHex[3];
  snprintf(myHex, 2 "%02x", myChar);

  // Print the contents of myHex
  printf("myHex = %s\n", myHex);
}

snprintf() - это функция, которая работает как printf(), за исключением того, что она заполняет массив символов максимум N символами.Синтаксис snprintf():

int snprintf(char *str, size_t size, const char *format, ...)

Где str - строка для «sprint», size - максимальное количество символов для записи (в нашем случае, 2), а остальные - какнормальный printf()

...