Одиночные символы идентификатора в строку - PullRequest
0 голосов
/ 30 мая 2011

Следующий фрагмент кода:

 unsigned char * get_id(unsigned char *buffer)
 {
     unsigned int i;

     for(i=0; i<8;i++)
         buffer[i] = read_byte(); // Returns uint8_t

     return buffer;
 }

В конце у меня есть 64-битный идентификатор.Я хотел бы вызвать get_id () и напечатать возвращаемое значение (ID) с помощью printf.Как мне это сделать?

Мое решение:

unsigned char tmp_buf[8]; 
unsigned char *ptr;

ptr = get_id(tmp_buf);
printf("ID = %02x %02x %02x %02x %02x %02x %02x %02x\n", ptr[7], ptr[6], ptr[5]...);

Это довольно ужасно, и мне это не очень нравится, но как напечатать его в "одном" небольшом printf-условии

1 Ответ

1 голос
/ 30 мая 2011

Просто распечатайте его как 64-разрядное целое число. Вам даже не нужно ничего менять в байтах.

#include <assert.h>
#include <inttypes.h>
#include <stdint.h>

union {
    uint8_t buf[8];
    uint64_t val;
} buffer;

uint8_t *ptr = get_id(buffer.buf);
assert(ptr && "should get id");
printf("ID = %"PRIx64"\n", buffer.val);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...