天天看點

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      {  

          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

Int(1234).ToString(“X4”)

4、C#

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

作者:葉帆

來源:CSDN

原文:

https://blog.csdn.net/yfiot/article/details/1744847

版權聲明:本文為部落客原創文章,轉載請附上博文連結!