如何解决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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。