標籤:c#
有兩種方法:
1. 要轉換成有符號整數,使用 Convert.ToInt32(string, 16) ;
要轉換成不帶正負號的整數,使用 Convert.ToUInt32(string, 16) 。
如果 16 進位的字串不是以 0x 或 0X 開頭,比如“af37”,用這種方法也能進行轉換。
2. 要轉換成有符號整數,使用 new System.ComponentModel.Int32Converter().ConvertFromString(string) ;
要轉換成不帶正負號的整數,使用 new System.ComponentModel.UInt32Converter().ConvertFromString(string) 。
注意:
使用這種方法要進行強制類型轉換。
如果 16 進位的字串不是以 0x 或 0X 開頭,不能用這種方法。
這兩種方法對字母的大小寫都不敏感,字串以0X或0x開頭都可以。對於16進位表示中可能出現的字元( 從a 到 f),用大寫或小寫表示都行,甚至是大小寫混雜的表示形式也可以,比如像 0Xa3Bf2 這樣的字串能夠被正確處理。
不管使用哪一種方法,都不要忘記要對可能拋出的異常進行處理。
下面給出一段範例程式碼:
/************************************************** * Author: HAN Wei * Author's blog: http://blog.csdn.net/henter/ * Date: April 22nd, 2015 * Description: demonstrate how to convert hexadecimal string* with leading 0x into integer**************************************************/using System;namespace HexStringConvertToInt{ class Program { static void Main(string[] args) { string hexValue = "0Xa3Bf2b10"; // Method 1: Console.WriteLine("Method 1:"); int decValue = 0; try { decValue = Convert.ToInt32(hexValue, 16); } catch (Exception e) { Console.WriteLine("An error occurred while converting!"); Console.WriteLine("Error message: " + e.Message); Console.ReadLine(); return; } Console.WriteLine("signed integer value: {0}", decValue); uint uDecValue = 0; try { uDecValue = Convert.ToUInt32(hexValue, 16); } catch (Exception e) { Console.WriteLine("An error occurred while converting!"); Console.WriteLine("Error message: " + e.Message); Console.ReadLine(); return; } Console.WriteLine("unsigned integer value: {0}", uDecValue); Console.WriteLine(); // Method 2: Console.WriteLine("------------------------------"); Console.WriteLine("Method 2:"); int iValue = 0; try { iValue = (int)new System.ComponentModel.Int32Converter().ConvertFromString(hexValue); } catch (Exception e) { Console.WriteLine("An error occurred while converting!"); Console.WriteLine("Error message: " + e.Message); Console.ReadLine(); return; } Console.WriteLine("signed integer value: {0}", iValue); uint uValue = 0; try { uValue = (uint)new System.ComponentModel.UInt32Converter().ConvertFromString(hexValue); } catch (Exception e) { Console.WriteLine("An error occurred while converting!"); Console.WriteLine("Error message: " + e.Message); Console.ReadLine(); return; } Console.WriteLine("unsigned integer value: {0}", uValue); Console.ReadLine(); } }}
C#中將以0x開頭的16進位字串轉換成對應的整數