C语言:将16进制字符串转化为int类型值

简介: 将16进制字符串值转换为 int 整型值   此例中用 "1de" 作为测试字符串,实现代码如下:   [cpp] view plaincopy   #include    #include    #include    #include       /* ...

将16进制字符串值转换为 int 整型值

 

此例中用 "1de" 作为测试字符串,实现代码如下:

 

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. #include <ctype.h>  
  5.   
  6. /* 
  7.  * 将字符转换为数值 
  8.  * */  
  9. int c2i(char ch)  
  10. {  
  11.         // 如果是数字,则用数字的ASCII码减去48, 如果ch = '2' ,则 '2' - 48 = 2  
  12.         if(isdigit(ch))  
  13.                 return ch - 48;  
  14.   
  15.         // 如果是字母,但不是A~F,a~f则返回  
  16.         if( ch < 'A' || (ch > 'F' && ch < 'a') || ch > 'z' )  
  17.                 return -1;  
  18.   
  19.         // 如果是大写字母,则用数字的ASCII码减去55, 如果ch = 'A' ,则 'A' - 55 = 10  
  20.         // 如果是小写字母,则用数字的ASCII码减去87, 如果ch = 'a' ,则 'a' - 87 = 10  
  21.         if(isalpha(ch))  
  22.                 return isupper(ch) ? ch - 55 : ch - 87;  
  23.   
  24.         return -1;  
  25. }  
  26.   
  27. /* 
  28.  * 功能:将十六进制字符串转换为整型(int)数值 
  29.  * */  
  30. int hex2dec(char *hex)  
  31. {  
  32.         int len;  
  33.         int num = 0;  
  34.         int temp;  
  35.         int bits;  
  36.         int i;  
  37.           
  38.         // 此例中 hex = "1de" 长度为3, hex是main函数传递的  
  39.         len = strlen(hex);  
  40.   
  41.         for (i=0, temp=0; i<len; i++, temp=0)  
  42.         {  
  43.                 // 第一次:i=0, *(hex + i) = *(hex + 0) = '1', 即temp = 1  
  44.                 // 第二次:i=1, *(hex + i) = *(hex + 1) = 'd', 即temp = 13  
  45.                 // 第三次:i=2, *(hex + i) = *(hex + 2) = 'd', 即temp = 14  
  46.                 temp = c2i( *(hex + i) );  
  47.                 // 总共3位,一个16进制位用 4 bit保存  
  48.                 // 第一次:'1'为最高位,所以temp左移 (len - i -1) * 4 = 2 * 4 = 8 位  
  49.                 // 第二次:'d'为次高位,所以temp左移 (len - i -1) * 4 = 1 * 4 = 4 位  
  50.                 // 第三次:'e'为最低位,所以temp左移 (len - i -1) * 4 = 0 * 4 = 0 位  
  51.                 bits = (len - i - 1) * 4;  
  52.                 temp = temp << bits;  
  53.   
  54.                 // 此处也可以用 num += temp;进行累加  
  55.                 num = num | temp;  
  56.         }  
  57.   
  58.         // 返回结果  
  59.         return num;  
  60. }  
  61.   
  62.   
  63. int main(int argc, char *argv[])  
  64. {  
  65.         char ch[10] = {0};  
  66.         strcpy(ch, "1de");  
  67.         printf("hex:%d\n", hex2dec(ch));  
  68.         return 0;  
  69. }  



 

 


本人在CentOS 6.5下测试

编译:gcc -Wall test.c -ohex

运行:./hex

输出:hex:478

目录
相关文章
|
7月前
|
安全 C语言
C语言中的字符、字符串及内存操作函数详细讲解
通过这些函数的正确使用,可以有效管理字符串和内存操作,它们是C语言编程中不可或缺的工具。
371 15
|
11月前
|
Python Windows
[oeasy]python076_int这个词怎么来的_[词根溯源]整数类型_int_integer_touch
本文探讨了“int”一词的起源及其与整数类型的关联。通过词根溯源,揭示“int”来源于“integer”,意为“完整的数”,与零碎的分数相对。同时分析了相关词汇如“tact”(接触)、“touch”(触摸)及衍生词,如“tangential”(切线的)、“intagible”(无形的)和“integral”(完整的、不可或缺的)。文章还结合编程语言特性,解释了Python作为动态类型、强类型语言的特点,并总结了整型变量的概念与意义。最后预告了后续内容,提供了学习资源链接。
410 11
|
11月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
265 1
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
604 10
|
存储 算法 C语言
C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项
本文深入探讨了C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项,并通过案例分析展示了实际应用,旨在帮助读者提高编程效率和代码质量。
792 4
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
669 2
|
存储 编译器 C语言
C语言:数组名作为类型、作为地址、对数组名取地址的区别
在C语言中,数组名可以作为类型、地址和取地址使用。数组名本身代表数组的首地址,作为地址时可以直接使用;作为类型时,用于声明指针或函数参数;取地址时,使用取地址符 (&),得到的是整个数组的地址,类型为指向该类型的指针。
1307 4
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
162 3
|
C语言 C++
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
214 2
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
220 1