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

有两种方法:
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();
        }
    }
}


 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值