编程过程中,我们有时需要将输入的表示十六进制数值的字符串转化为十进制数值。通过查询资料和总结,个人采用如下两种方式即可(分别是有符号数和无符号数值的转化):
方法一:当输入的十六进制数为无符号整数时
函数名: strtol
功 能:
将串转换为长整数
用 法: long strtol(char *str, char
**endptr, int base);//base指明我们要转换为几进制数
程序例:[code]#include
#include
int main(void)
{
char *string = "0x11",
*endptr;
long lnumber;
lnumber = strtol(string,
&endptr, 16);
printf("string =
%s long = %ld\n", string,
lnumber);
return 0;
}
[/code]在VC 6.0的MFC程序中,我们有时要转换句柄就可以用strtol这个函数
方法二:当输入的十六进制数为有符号数时,可采取如下实例方法直接转化
实例:
// ChangeToInt.cpp :
定义控制台应用程序的入口点。
//十六进制转化为十进制
#include "stdafx.h"
#include "stdlib.h"
int _tmain(int argc, _TCHAR*
argv[])
{
char
string[20]={0};
//一个16进制数值
int i=0;
long
lTen=0;
//存放16进制转化为10进制的数值
printf("请输入一个16进制数值:\n");
gets_s(string);
while
(string[i]!='\0')
{
if(string[i]>='0'
&& string[i]<='9')
{
lTen =
lTen*16+string[i]-'0';
}
if(string[i]>='A'
&& string[i] <= 'F')
{
lTen =
lTen*16+string[i]-'A'+10;
}
i++;
}
printf("这个16进制数值的位数:i = %d\n",i);
printf("转化后的10进制数为:lTen = %d\n",lTen);
return 0;
}
http://s6/mw690/006CZXf3zy7agzu5fIp55&690
加载中,请稍候......