获取十六进制数字的字符表示(创建字符*以显示十六进制值)

时间:2014-10-24 23:53:08

标签: c string hex ascii representation

我一直在寻找大约半个小时,我似乎无法找到一个很好的设置char *的过程,该char *指向一个对应于十六进制字符串的字符串。

只是为了澄清,我要做的是采用十六进制字符串(例如0x0043)并最终得到一个包含“0x0043”的字符串,可以在LCD显示器上使用或写入轻松归档。

我确信有一种相当简单的方法可以做到这一点,但没有发现任何线索。有人知道这个吗?

编辑:这是针对嵌入式项目的,因此我无法访问预定义的函数。

2 个答案:

答案 0 :(得分:1)

一次转换1个十六进制数字。

void foo(unsigned x) {
  char buf[2 + sizeof x * 2 + 1];
  char *p = &buf[sizeof buf - 1];
  *p-- = '\0';
  do {
    *p-- = "0123456789ABCDEF"[x&15];
    x >>= 4;
  } while (p != &buf[1]);
  *p-- = 'x';
  *p = '0';
  // Use p
  }

答案 1 :(得分:0)

你在寻找这样的东西:

#include <stdio.h>

#define MAX_HEX_LENGTH 10

int main()
{
       int x = 0x0043;
       char str[MAX_HEX_LENGTH];

       sprintf(str, "0x%.*x", MAX_HEX_LENGTH, x);
       printf("%s\n", str);
}

输出:

0x0000000043

您可以将值MAX_HEX_LENGTH更改为您想要的任何内容。