【问题标题】:How to convert string to hex value in C如何在C中将字符串转换为十六进制值
【发布时间】:2015-06-15 07:51:34
【问题描述】:

我有字符串“6A”如何转换为十六进制值 6A?

请帮助我解决 C 中的问题

我试过了

char c[2]="6A"
char *p;
int x = atoi(c);//atoi is deprecated 

int y = strtod(c,&p);//Returns only first digit,rest it considers as string and
//returns 0 if first character is non digit char.

【问题讨论】:

  • 通过使用 val=strtol(string, NULL, 16); 它返回一个 long 类型,因此您可能需要检查/转换它。
  • 不值得投反对票。这是真正的问题。
  • @mah 希望现在满足目的。
  • @SteveFenton 谢谢,但我需要 C 而非 obj-C 中的解决方案。
  • 我不同意快速和过度使用downvotes,但要指出的是,当快速搜索c convert string to hex 揭示了作为最高回报的精确答案时,它应该被使用在向 SO 寻求帮助之前。 SO 是为了帮助回答尚未回答 1000 次以上的问题。

标签: c string hex


【解决方案1】:

问题

“如何将字符串转换为十六进制值?”

经常被问到,但这不是一个正确的问题。会更好

“如何将十六进制字符串转换为整数值?”

原因是,整数(或 char 或 long)值以二进制方式存储在计算机中。

"6A" = 01101010

只有在人类表示中(在字符串中)才能以一种或另一种表示法表示值

"01101010b"   binary
"0x6A"        hexadecimal
"106"         decimal
"'j'"         character

都以不同的方式表示相同的值。

但在回答问题时,如何将十六进制字符串转换为int

char hex[] = "6A";                          // here is the hex string
int num = (int)strtol(hex, NULL, 16);       // number base 16
printf("%c\n", num);                        // print it as a char
printf("%d\n", num);                        // print it as decimal
printf("%X\n", num);                        // print it back as hex

输出:

j
106
6A

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 2018-01-22
    • 2016-08-07
    • 2013-02-07
    • 2022-07-22
    • 2015-02-06
    • 1970-01-01
    • 2016-03-06
    • 2019-07-27
    相关资源
    最近更新 更多