C的十六进制函数有没有?

时间:2010-03-16 14:39:40

标签: c hex

我有一个包含文本文件数据的char数组,我需要将其转换为十六进制格式。 C语言是否有这样的功能。

提前谢谢!

3 个答案:

答案 0 :(得分:5)

如果我正确理解了这个问题(不保证),你有一个文本字符串代表十进制格式的数字(“1234”),并且你想将它转换为十六进制格式的字符串(“4d2”)。

假设这是正确的,您最好的选择是使用sscanf()strtol()将输入字符串转换为整数,然后将sprintf()%x转换说明符一起使用将十六进制版本写入另一个字符串:

char text[] = "1234";
char result[SIZE]; // where SIZE is big enough to hold any converted value
int val;

val = (int) strtol(text, NULL, 0); // error checking omitted for brevity
sprintf(result, "%x", val);

答案 1 :(得分:4)

我假设您希望能够在数组中显示单个字节的十六进制值,有点像dump命令的输出。这是一种显示该数组中一个字节的方法。

需要格式上的前导零以保证输出的宽度一致。 您可以大写或小写X,以获得大写或小写表示。 我建议将它们视为无符号,因此不存在关于符号位的混淆。

unsigned char c = 0x41;
printf("%02X", c);

答案 2 :(得分:2)

您可以使用atoisprintf / snprintf。这是一个简单的例子。

char* c = "23";
int number = atoi(c);
snprintf( buf, sizeof(buf), "%x", number );