C 有没有 char 转 16 进制的函数?

发布于 2024-08-25 17:07:47 字数 70 浏览 5 评论 0原文

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

先感谢您!

I have a char array with data from a text file and I need to convert it to hexadecimal format.
Is there such a function for C language.

Thank you in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

Spring初心 2024-09-01 17:07:47

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

假设这是正确的,最好的选择是使用 sscanf()strtol() 将输入字符串转换为整数,然后使用 sprintf()< /code> 与 %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);

If I understand the question correctly (no guarantees there), you have a text string representing a number in decimal format ("1234"), and you want to convert it to a string in hexadecimal format ("4d2").

Assuming that's correct, your best bet will be to convert the input string to an integer using either sscanf() or strtol(), then use sprintf() with the %x conversion specifier to write the hex version to another string:

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);
那一片橙海, 2024-09-01 17:07:47

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

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

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

I am assuming that you want to be able to display the hex values of individual byes in your array, sort of like the output of a dump command. This is a method of displaying one byte from that array.

The leading zero on the format is needed to guarantee consistent width on output.
You can upper or lower case the X, to get upper or lower case representations.
I recommend treating them as unsigned, so there is no confusion about sign bits.

unsigned char c = 0x41;
printf("%02X", c);
尘曦 2024-09-01 17:07:47

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

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

You can use atoi and sprintf / snprintf. Here's a simple example.

char* c = "23";
int number = atoi(c);
snprintf( buf, sizeof(buf), "%x", number );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文