C语言:将16进制字符串转化为int类型值
来源:互联网 发布:手机桌面计时器软件 编辑:程序博客网 时间:2024/05/21 17:22
将16进制字符串值转换为 int 整型值
此例中用 "1de" 作为测试字符串,实现代码如下:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>/* * 将字符转换为数值 * */int c2i(char ch){ // 如果是数字,则用数字的ASCII码减去48, 如果ch = '2' ,则 '2' - 48 = 2 if(isdigit(ch)) return ch - 48; // 如果是字母,但不是A~F,a~f则返回 if( ch < 'A' || (ch > 'F' && ch < 'a') || ch > 'z' ) return -1; // 如果是大写字母,则用数字的ASCII码减去55, 如果ch = 'A' ,则 'A' - 55 = 10 // 如果是小写字母,则用数字的ASCII码减去87, 如果ch = 'a' ,则 'a' - 87 = 10 if(isalpha(ch)) return isupper(ch) ? ch - 55 : ch - 87; return -1;}/* * 功能:将十六进制字符串转换为整型(int)数值 * */int hex2dec(char *hex){ int len; int num = 0; int temp; int bits; int i; // 此例中 hex = "1de" 长度为3, hex是main函数传递的 len = strlen(hex); for (i=0, temp=0; i<len; i++, temp=0) { // 第一次:i=0, *(hex + i) = *(hex + 0) = '1', 即temp = 1 // 第二次:i=1, *(hex + i) = *(hex + 1) = 'd', 即temp = 13 // 第三次:i=2, *(hex + i) = *(hex + 2) = 'd', 即temp = 14 temp = c2i( *(hex + i) ); // 总共3位,一个16进制位用 4 bit保存 // 第一次:'1'为最高位,所以temp左移 (len - i -1) * 4 = 2 * 4 = 8 位 // 第二次:'d'为次高位,所以temp左移 (len - i -1) * 4 = 1 * 4 = 4 位 // 第三次:'e'为最低位,所以temp左移 (len - i -1) * 4 = 0 * 4 = 0 位 bits = (len - i - 1) * 4; temp = temp << bits; // 此处也可以用 num += temp;进行累加 num = num | temp; } // 返回结果 return num;}int main(int argc, char *argv[]){ char ch[10] = {0}; strcpy(ch, "1de"); printf("hex:%d\n", hex2dec(ch)); return 0;}
本人在CentOS 6.5下测试
编译:gcc -Wall test.c -ohex
运行:./hex
输出:hex:478
1 0
- C语言:将16进制字符串转化为int类型值
- C语言:将16进制字符串转化为int类型值
- 用C语言实现将int类型转化为字符串,不使用已有的转换函数
- C语言将数字转化为字符串
- C语言将数字转化为字符串
- go语言如何将时间转化为字符串String类型
- 16进制字符串转化成int类型
- C语言中如何将数转化为字符串
- C语言 将一个字符串转化为整数
- 将string字符串转化为16进制字符串
- 如何将Object类型转化为int类型
- c/c++ 下面 将string类型变量转化为int型
- 将几个类型转化为字符串
- 将枚举类型转化为字符串
- 字符串转化为int
- 将16进制转化为时间字符串
- 将整数转化为字符串【C语言版】
- c#--利用泛型将字符串转化为指定类型的值
- 简要比较线性表的顺序存储结构和链式存储结构
- 环境变量的一些问题
- 程序员的十层楼
- 文章排版中的实用CSS基础
- 登录 验证码的实现 --代码
- C语言:将16进制字符串转化为int类型值
- python解析网页中javascript动态添加的内容 一
- Mac OS X 隐藏进程相关资料
- 记一次失败的尝试--ubuntu下把笔记本无线网卡的驱动替换掉
- iOS开发之bug记录1
- MAC OS X 下常用工具
- Cocos2D-X2.2.3学习笔记6(UI系统)
- 第十二周 项目1 项目1 - 长颈鹿类对动物类的继承
- 新辰:对个人站长职业前景的探讨之路在何方?