我有一个包含文本文件数据的char数组,我需要将其转换为十六进制格式。 C语言是否有这样的功能。
提前谢谢!
答案 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)
您可以使用atoi
和sprintf
/ snprintf
。这是一个简单的例子。
char* c = "23";
int number = atoi(c);
snprintf( buf, sizeof(buf), "%x", number );