网站首页 > 物联资讯 > 技术分享

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

2016-09-28 00:00:00 广州睿丰德信息科技有限公司 阅读
睿丰德科技 专注RFID识别技术和条码识别技术与管理软件的集成项目。质量追溯系统、MES系统、金蝶与条码系统对接、用友与条码系统对接 这个问题看是很简单,但是在不同语言中实现的方式却千差万别,如果不知道方法,还真是麻烦,我就是在C#中遇到该问题,让我费了很大的周折,才在msdn查到。 一、16进制字符串转数字      1C/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;   
   }  
   2VB    LngHex=val(“&H12AB”)  3VB.net LngHex=val(“&H12AB”)  4C#      lngHex=Convert.ToInt32(“0x12AB”,16);   //也可以直接写12AB    Msdn上有一个条目:“如何:将十六进制字符串转换为数字”    使用ToInt32,第一个参数为要转换的字符串,第二个参数表示数字的基数,十六进制为16    此外不仅支持16进制,2810进制都支持    二、数字转16进制字符串 1C/C++ Printf(“%x”,1234); 2VB Hex(1234) 3VB.net Hex(1234) Int(1234).ToString(“X4”) 4C# ((int)1234).ToString(“X4”);RFID管理系统集成商 RFID中间件 条码系统中间层 物联网软件集成