我有一个字符数组,其中包含来自文本文件的数据,我需要将其转换为十六进制格式。C语言有这样的函数吗?
提前谢谢你!
发布于 2010-03-16 23:01:47
如果我正确理解了这个问题(这里没有保证),您有一个表示十进制格式的数字的文本字符串("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);发布于 2010-03-16 22:44:09
我假设您希望能够显示数组中各个byes的十六进制值,有点像转储命令的输出。这是显示该数组中的一个字节的方法。
格式上的前导零是保证输出宽度一致所必需的。您可以将X大写或小写,以获得大写或小写表示。我建议将它们视为无符号的,这样就不会对符号位产生混淆。
unsigned char c = 0x41;
printf("%02X", c);发布于 2010-03-16 22:42:14
您可以使用atoi和sprintf / snprintf。这里有一个简单的例子。
char* c = "23";
int number = atoi(c);
snprintf( buf, sizeof(buf), "%x", number );https://stackoverflow.com/questions/2455245
复制相似问题