C语言 十六进制整数字符串转十进制整数 |
您所在的位置:网站首页 › c语言的浮点数表示 › C语言 十六进制整数字符串转十进制整数 |
【问题描述】 给定一个不超过0xFFFFFFFF的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 【解决方案】 方案1: 使用C标准库strtol函数。 #include #include int main(void) { char str1[] = "FFFF"; char* endptr = NULL; long data = 0; data = strtol(str1, &endptr, 16); printf("%s\r\n",str1); printf("data=%ld\r\n", data); return 0; }结果: 注:此函数支持识别0x和0X前缀,以及字符串中可包含大小写。 结果: 补充: 实现将一个字符串中多个十六进制字符(有空格或其他字符间隔)分别转换成十进制数,并返回成功转换的数量。 样例输入 F1 65 3a 5b 6a1a 样例输出 241 101 58 91 27162 方案1: #include #include int nhtoi(int* dst, char* src) { char* endptr = NULL; int num = 0; while (1) { if((*src >= '0' && *src = 'a' && *src = 'A' && *src if (num == 0) return -1; else return num; } else { src++; } } } int main(void) { char str1[] = "F1 65 3a 5b 6a1a"; char* endptr = NULL; int data[10] = {0}; int num = 0; num = nhtoi(data, str1); printf("%s\r\n", str1); for (int i = 0; i int num = 0; while (1) { if((*src >= '0' && *src = 'a' && *src = 'A' && *src if (num == 0) return -1; else return num; } else { src++; } } }结果: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |