16进制字符-->10进制数字

简介: 方法1: view plaincopy to clipboardprint?#include <stdio.h>     int main()   {       char   szValue[]  =   "0x11";          int    nValude    =   0;              sscanf(szValue,"%x",&nValude
方法1:
view plaincopy to clipboardprint?
#include <stdio.h>  
 
int main()  
{  
    char   szValue[]  =   "0x11";     
    int    nValude    =   0;         
    sscanf(szValue,"%x",&nValude);     
    printf("%d/n",nValude);  
    return 0;     
}  
/*输出:  17  */ 
主要用到sscanf这个库函数:
函数名: sscanf
功  能: 执行从字符串中的格式化输入
用  法: int sscanf(char *string, char *format[,argument,...]); //%x就是我们要格式化的类型,即输出十六进制
 
方法2:
#include <stdio.h>  
#include <stdlib.h>//strtol头文件  
 
int main()  
{  
    char *p="0x11";     
    char *str;     
    int i = (int)strtol(p, &str, 16);//十六进制  
    printf("%d/n",i);  
    return 0;     
}  
/*输出:  17  */ 
主要用到strtol这个库函数,它的使用方法是:
函数名: strtol
功  能: 将串转换为长整数
用  法: long strtol(char *str, char **endptr, int base);//base指明我们要转换为几进制数
程序例:
view plaincopy to clipboardprint?
#include <stdlib.h>   
#include <stdio.h>   
 
int main(void)   
{   
   char *string = "0x11", *endptr;   
   long lnumber;   
 
   /* strtol converts string to long integer */   
   lnumber = strtol(string, &endptr, 16);   
   printf("string = %s  long = %ld/n", string, lnumber);   
 
   return 0;   
}   
/*输出:  string = 0x11 long = 17  */ 
在VC 6.0的MFC程序中,我们有时要转换句柄就可以用strtol这个函数,比如:
view plaincopy to clipboardprint?
HANDLE handle = (HANDLE)strtol(str,NULL, 16); 
HANDLE handle = (HANDLE)strtol(str,NULL, 16);
PS:句柄是什么?
句柄就是用来区分各种内存对象的唯一标识符号,是个32位整数。
有些是整个系统唯一(如窗口句柄),有些是当前进程或线程中唯一(如线程句柄,全局的有另一个标识符)。
详细的可分为许多种,都是以H开头的。在VB中使用时全部都用Long。
常见的有窗口句柄(HWND),设备描述表句柄(HDC),内存句柄(HMEM),文件句柄,进程句柄,线程句柄,笔的类型句柄(HPEN),字体句柄(HFONT),区域句柄(HRGN)等等。
在申请句柄时是要占用资源的,分三类SYSTEM、USER、GDI。而WINDOWS的资源是固定的,并不随内存的扩大而扩大,所以使用完以后一定要释放。
方法3:
在网上,还看到一位朋友提出一种方法,就是读写INI文件(我认为这种方法效率太低,毕竟要读写文件的),也将其摘录如下:
view plaincopy to clipboardprint?
//存储HANDLE  
struct Tag_STRUCT  
    {  
        HWND hWnd;  
    } ;  
    struct Tag_STRUCT Struct;  
 
    Struct.hWnd = m_hWnd;  
    //把包含句柄的结构体写入ini文件  
    WritePrivateProfileStruct("Section","Key",&Struct,sizeof(Struct),"C://1.ini");  
 
//读取HANDLE  
    struct Tag_STRUCT  
    {  
        HWND hWnd;  
    } ;  
    struct Tag_STRUCT Struct;  
    //从包含句柄的结构体的ini文件读取HANDLE  
    GetPrivateProfileStruct("Section","Key",&Struct,sizeof(Struct),"C://1.ini"); 
以上是我目前所知道的可以将十六进制的字符串转化为整形数值的方法,可能还有更合适的方法,也请看到此篇文章的朋友帮忙留言添加,谢过!(看过外国的WiKipedia觉得很好,真希望我们国家也能有一个这样的东东,方便以后的朋友查阅)
相关文章
|
10月前
|
Java
常用字节转换(字符串转16进制,16进制转字符串)
常用字节转换(字符串转16进制,16进制转字符串)
|
10月前
|
C语言
整数和浮点数的任意进制转!!(包括16进制)确定不进来看看?!
整数和浮点数的任意进制转!!(包括16进制)确定不进来看看?!
101 0
|
10月前
|
存储 程序员 DataX
利用链式栈实现八进制转换成十进制
利用链式栈实现八进制转换成十进制
84 0
一种基于质数(2、3、5、7、11…)的变进制数,第一位为2进制,第二位为3进制,第三位为5进制,以此类推。请将该变进制数转化为十进制数。
一种基于质数(2、3、5、7、11…)的变进制数,第一位为2进制,第二位为3进制,第三位为5进制,以此类推。请将该变进制数转化为十进制数。
121 0
一种基于质数(2、3、5、7、11…)的变进制数,第一位为2进制,第二位为3进制,第三位为5进制,以此类推。请将该变进制数转化为十进制数。
十六进制字符串
十六进制字符串
85 0
二进制、八进制、十进制、十六进制前缀
二进制、八进制、十进制、十六进制前缀
144 0
|
算法 Java 程序员
使用位运算方法实现十进制数字转换为十六进制数
给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。
使用位运算方法实现十进制数字转换为十六进制数
|
算法 C语言
C语言实现10进制转变成2进制,8进制,16进制,字符‘0’-‘9’
C语言实现10进制转变成2进制,8进制,16进制,字符‘0’-‘9’
182 0
C语言实现10进制转变成2进制,8进制,16进制,字符‘0’-‘9’
十六进制数组转换成ASCII码
十六进制数组转换成ASCII码
192 0
|
C#
C#字母转换成数字/数字转换成字母 - ASCII码转换
字母转换成数字 byte[] array = new byte[1];   //定义一组数组arrayarray = System.Text.Encoding.ASCII.GetBytes(string); //string转换的字母int asciicode = (short)(array[0]); ASCII码 = Convert.
3649 0