注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

心情挺好的博客

正在等你光临呢 呵呵

 
 
 

日志

 
 
关于我

喜欢摄影的朋友看过来:) 有时间就跟我一起去拍照去吧. QQ272751 上海圣玛丽摄影化妆培训学校 16年专业摄影培训化妆培训学校 电话:15900513500。 http://www.smlsh.com

网易考拉推荐

16进制字符串转数字  

2008-01-21 15:06:53|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

16进制字符串转数字(C/C++,VB/VB.net,C#)     

 

这个问题看是很简单,但是在不同语言中实现的方式却千差万别,如果不知道方法,还真是麻烦,我就是在C#中遇到该问题,让我费了很大的周折,才在msdn查到。

一、16进制字符串转数字

     1、C/C++

           I、最简单的办法:sscanf(“12AB”,,”%x”,&lngHex);   //字符也可以为”0x12AB”

      II、有个朋友,自行编写函数实现了该功能,据说速度比sscanf快:

      BOOL   HexToDec(   LPCTSTR   shex,int&   idec   )  

     {  

      int   i,mid;  

      int   len   =   lstrlen(   shex   );      

      if(   len>8   )     return   FALSE;     

      mid   =   0;   idec   =   0;  

      for(   i=0;i<len;i++   )  

      {  

          if(   shex[i]>='0'&&shex[i]<='9'   )   mid   =   shex[i]-'0';  

          else   if(   shex[i]>='a'&&shex[i]<='f'   )   mid   =   shex[i]   -'a'   +10;  

          else   if(   shex[i]>='A'&&shex[i]<='F'   )   mid   =   shex[i]   -'A'   +10;  

          else   return   FALSE;      

          mid   <<=   ((len-i-1)<<2);  

          idec   |=   mid;      

      }      

      return   TRUE;  

   }  

   2、VB

   LngHex=val(“&H12AB”)

 3、VB.net

LngHex=val(“&H12AB”)

 4、C#

     lngHex=Convert.ToInt32(“0x12AB”,16);   //也可以直接写12AB

   在Msdn上有一个条目:“如何:将十六进制字符串转换为数字”

   使用ToInt32,第一个参数为要转换的字符串,第二个参数表示数字的基数,十六进制为16。

   此外不仅支持16进制,2,8,10进制都支持 

 

二、数字转16进制字符串

1、C/C++

Printf(“%x”,1234);

2、VB

Hex(1234)

3、VB.net

Hex(1234)

Int(1234).ToString(“X4”)

4、C#

((int)1234).ToString(“X4”);

 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1744847

  评论这张
 
阅读(685)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017