Преобразование шестнадцатеричного кода в строку с помощью 'sprintf' - PullRequest
4 голосов
/ 23 января 2011

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

static unsigned char  digest[16];
static unsigned char hex_tmp[16];

for (i = 0; i < 16; i++) {
  printf("%02x",digest[i]);  <--- WORKS
  sprintf(&hex_tmp[i], "%02x", digest[i]);  <--- DOES NOT WORK!
}

Ответы [ 3 ]

11 голосов
/ 23 января 2011
static unsigned char  digest[16];
static char hex_tmp[33];

for (i = 0; i < 16; i++)  {
  printf("%02x",digest[i]);  <--- WORKS
  sprintf(&hex_tmp[i*2],"%02x", digest[i]);  <--- WORKS NOW
}
9 голосов
/ 23 января 2011

Возможно, вам нужно:

&hex_tmp[i * 2]

А также массив большего размера.

0 голосов
/ 23 января 2011

Символ, хранящийся в числовом формате, не совпадает со строкой:

unsigned char i = 255;
unsigned char* str = "FF";
unsigned char arr1[] = { 'F', 'F', '\0' };
unsigned char arr2[] = { 70, 70, 0 };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...