如何优雅地使用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表示是最简单的方法吗?
答案 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]; }
请注意,我实际上并未编译此代码。