C - 将十六进制转换为字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C - 将十六进制转换为字符串相关的知识,希望对你有一定的参考价值。
继一个老问题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
", temp);
return 0;
}
o / p似乎 - String: 4aaa40
3)结合这两个问题,我希望我的结果字符串是4aabab0a40
TIA
答案
您的代码有几个问题。
第一个unsigned char temp[10];
应该是unsigned char temp[11];
包含一个字符串终止符。
接下来是格式规范"%x"
应该是"%02x"
所以每个值是2位数。
然后temp + i
应该是temp + i*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[11];
int i = 0;
while (i < 5)
{
sprintf(temp + i*2, "%02x", readingreg[i]);
i++;
}
printf("String: %s
", temp);
return 0;
}
现在是程序输出所必需的
String: 4aabab0a40
以上是关于C - 将十六进制转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章
求C语言将十六进制字符串转换为整型int的函数源代码,要求不能用库函数?