加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

将十六进制字符串转为十进制数值(有符号无符号数方法都有介绍)

(2017-04-13 11:43:33)
分类: C语言

    编程过程中,我们有时需要将输入的表示十六进制数值的字符串转化为十进制数值。通过查询资料和总结,个人采用如下两种方式即可(分别是有符号数和无符号数值的转化):

方法一:当输入的十六进制数为无符号整数时

函数名: 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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有