当前位置: 首页 > news >正文

C# 十六进制字符串转换为十进制

在 C# 中,将十六进制(Hexadecimal)字符串转换为十进制(Decimal)整数非常简单。以下是几种常见的方法:


方法 1: 使用 Convert.ToInt32

Convert.ToInt32 方法可以直接将十六进制字符串转换为十进制整数。

示例代码
using System;

class Program
{
    static void Main()
    {
        string hexValue = "1A3"; // 十六进制字符串
        int decimalValue = Convert.ToInt32(hexValue, 16); // 转换为十进制
        Console.WriteLine($"十六进制 {hexValue} 转换为十进制是: {decimalValue}");
    }
}
输出
十六进制 1A3 转换为十进制是: 419

方法 2: 使用 int.Parseint.TryParse

int.Parseint.TryParse 也可以将十六进制字符串转换为十进制整数,需要指定 NumberStyles.HexNumber

示例代码
using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        string hexValue = "1A3"; // 十六进制字符串
        int decimalValue = int.Parse(hexValue, NumberStyles.HexNumber); // 转换为十进制
        Console.WriteLine($"十六进制 {hexValue} 转换为十进制是: {decimalValue}");
    }
}
输出
十六进制 1A3 转换为十进制是: 419
使用 int.TryParse 处理异常

如果十六进制字符串可能无效,可以使用 int.TryParse 来避免异常:

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        string hexValue = "1A3"; // 十六进制字符串
        if (int.TryParse(hexValue, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out int decimalValue))
        {
            Console.WriteLine($"十六进制 {hexValue} 转换为十进制是: {decimalValue}");
        }
        else
        {
            Console.WriteLine("无效的十六进制字符串");
        }
    }
}

方法 3: 手动转换

如果你希望手动实现十六进制到十进制的转换,可以使用以下算法:

示例代码
using System;

class Program
{
    static void Main()
    {
        string hexValue = "1A3"; // 十六进制字符串
        int decimalValue = HexToDecimal(hexValue);
        Console.WriteLine($"十六进制 {hexValue} 转换为十进制是: {decimalValue}");
    }

    static int HexToDecimal(string hex)
    {
        int result = 0;
        for (int i = 0; i < hex.Length; i++)
        {
            char c = hex[i];
            int digit = c >= '0' && c <= '9' ? c - '0' :
                       c >= 'A' && c <= 'F' ? c - 'A' + 10 :
                       c >= 'a' && c <= 'f' ? c - 'a' + 10 : 0;
            result = result * 16 + digit;
        }
        return result;
    }
}
输出
十六进制 1A3 转换为十进制是: 419

方法 4: 使用 BitConverter(适用于字节数组)

如果十六进制数据是以字节数组的形式存在,可以使用 BitConverter 将其转换为十进制。

示例代码
using System;

class Program
{
    static void Main()
    {
        byte[] bytes = { 0x1A, 0x03 }; // 十六进制字节数组
        int decimalValue = BitConverter.ToInt16(bytes, 0); // 转换为十进制
        Console.WriteLine($"十六进制字节数组转换为十进制是: {decimalValue}");
    }
}
输出
十六进制字节数组转换为十进制是: 6667

总结

  • 推荐方法:使用 Convert.ToInt32int.Parse,简单且高效。
  • 手动转换:适用于学习或特殊需求。
  • 字节数组:如果数据是字节数组形式,可以使用 BitConverter

根据你的需求选择合适的方法即可!

相关文章:

  • Error [ERR_REQUIRE_ESM]: require() of ES Module
  • 深入了解 DevOps 基础架构:可追溯性的关键作用
  • 深入理解 C++17 中的 std::atomic<T>::is_always_lock_free
  • 全面了解 Stanford NLP:强大自然语言处理工具的使用与案例
  • 在mfc中使用自定义三维向量类和计算多个三维向量的平均值
  • Alluxio Enterprise AI 3.5 发布,全面提升AI模型训练性能
  • UE 学习记录
  • 2025-02-20 学习记录--C/C++-PTA 7-27 冒泡法排序
  • PT8022W 单触控单输出 LED 调光 IC
  • uni-app小程序开发 基础知识2
  • python-leetcode 39.二叉树的直径
  • 第一篇:DeepSeek-R1 的诞生与背景
  • (蓝桥杯——10. 小郑做志愿者)洛斯里克城志愿者问题详解
  • kill -9 结束某个用户所有进程的方式-linux019
  • 来京东实习的个人收获与总结
  • 【大模型】DeepSeek-RAG 本地化部署与军事情报应用研究报告
  • spring中aop
  • Canvas进阶-2、可视化应用
  • C++ Primer 库-IO类
  • 解锁C#自定义属性:从0到1的深度实践指南
  • 侧记|“五五购物节”启动!最大力度补贴,买买买 “666”
  • 旭辉控股集团:去年收入477.89亿元,长远计划逐步向轻资产业务模式转型
  • 今年五一假期出游人群规模预计比去年提升8%,哪里最热门?
  • 莫名的硝烟|“我们最好记住1931年9月18日这个日子”
  • 抗美援朝老战士宁昭逝世,享年93岁
  • 中国防疫队深入缅甸安置点开展灾后卫生防疫工作