C(linux上的gcc):如何将十六进制字符串"0xfffffff"转换为整数?

Che*_*ezo 2 c gcc

C(linux上的gcc):如何将十六进制字符串"0xfffffff"转换为整数?

EFr*_*aim 7

 scanf("%x", &integer);
 sscanf("0xffffffff", "%x", &integer);
Run Code Online (Sandbox Code Playgroud)


qua*_*ark 7

另外,准便携,方法是strtol和它的同伴strtoul,strtollstrtoull.他们看着像是:

long
strtol(const char * restrict nptr, char ** restrict endptr, int base);
Run Code Online (Sandbox Code Playgroud)

使用有点奇怪.第一个参数是要转换的字符串,第三个参数是base,对于hex,它将是16.第二个参数用于调试:它可以指向十六进制字符串中未能转换的第一个字符.

  • +1.我怀疑第二个论点是专门为调试而设计的.它似乎可用于继续解析给我. (2认同)
  • 并检查错误.如果返回零,则应该区分成功的零解析和失败的解析.如果需要前导'0x',基数也可以保留为0.0的基数将根据其前缀解析十进制,八进制和十六进制数. (2认同)