我一直在寻找大约半个小时,我似乎无法找到一个很好的设置char *的过程,该char *指向一个对应于十六进制字符串的字符串。
只是为了澄清,我要做的是采用十六进制字符串(例如0x0043)并最终得到一个包含“0x0043”的字符串,可以在LCD显示器上使用或写入轻松归档。
我确信有一种相当简单的方法可以做到这一点,但没有发现任何线索。有人知道这个吗?
编辑:这是针对嵌入式项目的,因此我无法访问预定义的函数。
答案 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更改为您想要的任何内容。