关注旧问题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
答案 0 :(得分:1)
您的代码有几个问题。
首先unsigned char temp[11];
应为"%x"
以包含字符串终结符。
接下来格式规范"%02x"
应为temp + i
,因此每个值都是2位数。
然后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\n", temp);
return 0;
}
,因此每对数字都写在正确的位置。
纠正这些错误:
{{ partial "header" . }}
<article>
<header>
{{ partial "title" . }}
{{ with .Content }}{{.}}{{ end }}
</header>
{{ if (eq $.Parent.Title "Projects") }}
<ul class="no-bullet">
{{ range .Paginator.Pages }}
{{ partial "li" . }}
{{ end }}
</ul>
{{ partial "paginator" . }}
{{ else }}
{{ range (where .Site.Pages "Section" "projects") }}
<ul class="no-bullet">
{{ range .Sections }}
<li>
<span><time datetime="{{.Date}}">{{ .Date.Format .Site.Params.DateFmt }}</time></span>
<a href="{{ .Permalink }}">{{ .Title }}</a>
</li>
{{ end }}
</ul>
{{ end }}
{{ end }}
</article>
{{ partial "footer" . }}
{{/* keep the / right next to the parenthesis */}}
{{/* printf "%#v" $.CurrentSection.Title */}}
{{/* printf "%#v" (eq $.Parent.Title "Projects") */}}
程序输出现在是必需的
String: 4aabab0a40