您的位置:首页 > 编程语言 > C#

C#中将以0x开头的16进制字符串转换成对应的整数

2015-04-22 16:19 393 查看
有两种方法:

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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: