首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C语言中有没有十六进制的字符转换函数?

C语言中有没有十六进制的字符转换函数?
EN

Stack Overflow用户
提问于 2010-03-16 22:39:40
回答 3查看 22.3K关注 0票数 5

我有一个字符数组,其中包含来自文本文件的数据,我需要将其转换为十六进制格式。C语言有这样的函数吗?

提前谢谢你!

EN

回答 3

Stack Overflow用户

发布于 2010-03-16 23:01:47

如果我正确理解了这个问题(这里没有保证),您有一个表示十进制格式的数字的文本字符串("1234"),并且您希望将其转换为十六进制格式的字符串("4d2")。

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

代码语言:javascript
复制
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);
票数 5
EN

Stack Overflow用户

发布于 2010-03-16 22:44:09

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

格式上的前导零是保证输出宽度一致所必需的。您可以将X大写或小写,以获得大写或小写表示。我建议将它们视为无符号的,这样就不会对符号位产生混淆。

代码语言:javascript
复制
unsigned char c = 0x41;
printf("%02X", c);
票数 4
EN

Stack Overflow用户

发布于 2010-03-16 22:42:14

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

代码语言:javascript
复制
char* c = "23";
int number = atoi(c);
snprintf( buf, sizeof(buf), "%x", number );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2455245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档