C - 将十六进制转换为字符串

时间:2017-12-25 20:36:57

标签: c arrays string printf

关注旧问题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

1 个答案:

答案 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