ID的单个字符为String

问题描述

| 以下代码段:
 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位ID。我想调用get_id()并使用printf打印返回值(ID)。我怎么做? 我的解决方案是:
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语句中打印它呢?     

解决方法

        只需将其打印为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);