【发布时间】:2018-06-06 21:35:09
【问题描述】:
关注一个老问题Converting hex to string in C?
批准的答案建议使用 sprintf 将每个十六进制转换为字符串。
我对此有两个问题 -
1) 当我有一个像0a 这样的十六进制时,我希望我的字符串也有0a,但是按照上述解决方案,结果将有a。
2) 我在这里做错了什么?
#include <stdio.h>
int main(void)
{
unsigned char readingreg[10];
readingreg[0] = 0x4a;
readingreg[1] = 0xab;
readingreg[2] = 0xab;
readingreg[3] = 0x0a;
readingreg[4] = 0x40;
unsigned char temp[10];
int i = 0;
while (i < 5)
{
sprintf(temp + i, "%x", readingreg[i]);
i++;
}
printf("String: %s\n", temp);
return 0;
}
o/p 似乎是 - String: 4aaa40
3) 结合这两个问题,我希望我的结果字符串为4aabab0a40
TIA
【问题讨论】:
-
sprintf(temp + 2*i, "%02x", readingreg[i]);和:unsigned char temp[10+1];(但最好使用 sprintf() 的返回值,或者:甚至使用 snprintf()) -
1) 毫无疑问。 3) 毫无疑问。 2) 超出了 SO 的范围。