猿问

将十六进制字符串(char [])转换为int?

将十六进制字符串(char [])转换为int?

我有一个char []包含一个值,如“0x1800785”,但我想要赋值的函数需要一个int,我怎么能把它转换成一个int?我搜索过但找不到答案。谢谢。



万千封印
浏览 3268回答 3
3回答

RISEBY

你试过strtol()吗?strtol - 将字符串转换为长整数例:const char *hexstring = "abcdef0";int number = (int)strtol(hexstring, NULL, 16);如果数字的字符串表示以0x前缀开头,则必须使用0作为基数:const char *hexstring = "0xabcdef0";int number = (int)strtol(hexstring, NULL, 0);(也可以指定一个明确的基数,如16,但我不建议引入冗余。)

森林海

这样的东西可能有用:char str[] = "0x1800785";int num;sscanf(str, "%x", &num);printf("0x%x %i\n", num, num);阅读man sscanf
随时随地看视频慕课网APP
我要回答