如何优雅地snprintf?

时间:2011-07-30 11:42:39

标签: c ascii printf

如何优雅地使用snprintf函数或标准C库中的其他函数,通过unsigned char数组的ASCII表示来填充内存?

char data[16];
char dataRepresentation[33];
...
for (i = 0; i < 16; ++i)
        snprintf(&dataRepresentation[i * 2], 3, "%02x", (unsigned char) data[i])

获取ASCII表示是最简单的方法吗?

1 个答案:

答案 0 :(得分:1)

有点苦恼会更快:

char data[16];
char dataRepresentation[2 * sizeof data];
static const char master[] = "01234567890abcdef";
...
for (i = 0; i < sizeof data; ++i)
{
     dataRepresentation[i * 2] = master[0xF&(data[i]>>4)];
     dataRepresentation[i * 2 + 1] = master[data[i]&0xF];
}

请注意,我实际上并未编译此代码。