C# 16进制与字符串、字节数组之间的转换

下面我将详细讲解C#中16进制与字符串、字节数组之间的转换。

字符串与16进制转换

字符串转16进制

我们可以使用BitConverterEncoding提供的方法来将字符串转化为16进制。

以下是将字符串转化为16进制的示例代码:

string str = "Hello World!";
byte[] bytes = Encoding.UTF8.GetBytes(str);   // 将字符串编码成字节数组
string hexStr = BitConverter.ToString(bytes).Replace("-", "");   // 将字节数组转换成16进制字符串
Console.WriteLine(hexStr);   // 48-65-6C-6C-6F-20-57-6F-72-6C-64-21

在上面的代码中,我们首先将字符串"Hello World!"使用UTF8编码成字节数组,然后使用BitConverter.ToString()将其转换为16进制字符串。由于BitConverter.ToString()得到的结果是用-分隔的,因此还需要通过Replace()方法将其替换成不带分隔符的字符串。

16进制转字符串

我们可以使用EncodingGetString()方法将16进制字符串转化为字符串。需要先将16进制字符串转化为字节数组,再用Encoding将其解码成字符串。

以下是将16进制转化为字符串的示例代码:

string hexStr = "48-65-6C-6C-6F-20-57-6F-72-6C-64-21";
byte[] bytes = new byte[hexStr.Length / 2];
for (int i = 0; i < bytes.Length; i++)
{
    bytes[i] = Convert.ToByte(hexStr.Substring(i * 2, 2), 16);
}
string str = Encoding.UTF8.GetString(bytes);   // 将字节数组解码成字符串
Console.WriteLine(str);   // Hello World!

在上面的代码中,我们首先将16进制字符串按照-进行分割,得到一个字符串数组,然后将这个字符串数组中的每一个字符串转化为一个字节(byte)类型的数值。最后,我们使用Encoding中的GetString()方法将字节数组转化为字符串。

字节数组与16进制转换

字节数组转16进制

我们可以使用BitConverter提供的方法将字节数组转化为16进制。

以下是将字节数组转化为16进制的示例代码:

byte[] bytes = new byte[] { 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x21 };
string hexStr = BitConverter.ToString(bytes).Replace("-", "");   // 将字节数组转换成16进制字符串
Console.WriteLine(hexStr);   // 48656C6C6F20576F726C6421

在上面的代码中,我们首先创建一个字节数组,然后使用BitConverter.ToString()将其转换成16进制字符串。由于BitConverter.ToString()得到的结果是用-分隔的,因此还需要通过Replace()方法将其替换成不带分隔符的字符串。

16进制转字节数组

我们可以使用Convert提供的方法将16进制字符串转化为字节数组。

以下是将16进制转化为字节数组的示例代码:

string hexStr = "48656C6C6F20576F726C6421";
byte[] bytes = new byte[hexStr.Length / 2];
for (int i = 0; i < bytes.Length; i++)
{
    bytes[i] = Convert.ToByte(hexStr.Substring(i * 2, 2), 16);
}
Console.Write("[ ");
for (int i = 0; i < bytes.Length; i++)
{
    Console.Write("0x" + bytes[i].ToString("X2") + " ");
}
Console.WriteLine("]");   // [0x48 0x65 0x6C 0x6C 0x6F 0x20 0x57 0x6F 0x72 0x6C 0x64 0x21]

在上面的代码中,我们首先将16进制字符串按照长度为2进行分割,得到一个字符串数组,然后将这个字符串数组中的每一个字符串转化为一个字节(byte)类型的数值组成字节数组。最后,我们使用循环打印出字节数组中的每一个元素(Hex表示)。

希望以上内容对你有帮助,谢谢!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 16进制与字符串、字节数组之间的转换 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 使用.NET升级助手将.NET Framework项目升级为.NET 6

    下面是使用.NET升级助手将.NET Framework项目升级为.NET 6的完整攻略: 一、准备工作 在进行.NET Framework项目升级时, 应该先行备份项目源代码和相关配置文件,以便在升级过程中出现问题时进行恢复。此外,还需要先行安装.NET 6 SDK和Visual Studio 2019或更高版本。 二、升级.NET Framework项目…

    C# 2023年6月3日
    00
  • C#实现HTTP访问类HttpHelper的示例详解

    C#实现HTTP访问类HttpHelper的示例详解 1. 什么是HttpHelper类 HttpHelper类是一个用于实现HTTP访问的工具类,通过该类可以实现Http的GET、POST、PUT、DELETE等请求。 2. 如何使用HttpHelper类 使用HttpHelper类需要先引入命名空间: using System.Net; 接着,可以通过以…

    C# 2023年5月15日
    00
  • 记一次 .NET 某外贸ERP 内存暴涨分析

    一:背景 1. 讲故事 上周有位朋友找到我,说他的 API 被多次调用后出现了内存暴涨,让我帮忙看下是怎么回事?看样子是有些担心,但也不是特别担心,那既然找到我,就给他分析一下吧。 二:WinDbg 分析 1. 到底是哪里的泄露 这也是我一直在训练营灌输的理念,一定要知道是哪一边的暴涨,否则很可能就南辕北辙了,使用 !address -summary 和 !…

    C# 2023年4月27日
    00
  • asp.net C#生成和解析二维码的实例代码

    生成和解析二维码是现代开发中常见的需求,下面将介绍使用ASP.NET C#语言生成和解析二维码的实例代码。 生成二维码 使用C#语言生成二维码的方法有很多,我这里将介绍一种最常用的方法,即使用QRCoder库生成二维码。 安装QRCoder库 首先需要安装QRCoder库,在Visual Studio中打开项目,选择“工具”-“NuGet包管理器”-“程序包…

    C# 2023年5月31日
    00
  • C#使用Process类调用外部exe程序

    一、介绍 在使用C#进行编程的过程中,有时需要使用外部程序来进行特定的操作。在这种情况下,可以使用Process类进行操作。Process类是C#中用于启动外部进程的类,它允许我们创建、控制和执行操作系统中的进程,比如启动一个Windows应用程序或者调用另一个可执行文件。 二、基本用法 使用Process类调用外部exe程序的基本流程如下: 首先创建一个P…

    C# 2023年6月7日
    00
  • asp.net 用户控件读取以及赋值

    让我们来详细讲解一下如何读取和赋值 ASP.NET 用户控件。 什么是 ASP.NET 用户控件? ASP.NET 用户控件是由 ASP.NET 页面和服务器控件组成的。它们是可重用的模块,可以在多个页面中使用,并且可以像其他服务器控件一样自定义和配置。用户控件通常用于在多个页面中使用相同的用户界面元素。 如何创建 ASP.NET 用户控件? 要创建 ASP…

    C# 2023年6月3日
    00
  • C# 利用Autofac批量接口注入依赖的问题小结

    首先我们需要明确“依赖注入”和“Autofac”的概念。 依赖注入是一种设计模式,它可以使代码更加灵活,易于扩展和测试。在依赖注入中,对象之间的依赖关系不是在对象内部被创建,而是通过外部容器提供的依赖注入机制来实现的。这样,整个系统可以视为由各个松散耦合的模块组成,每个模块都可以独立开发和测试。 Autofac是一个开源的.NET依赖注入框架,可以将依赖注入…

    C# 2023年6月3日
    00
  • 浅谈C# 序列化与反序列化几种格式的转换

    下面是 “浅谈C# 序列化与反序列化几种格式的转换” 的完整攻略: 目录 什么是序列化与反序列化 为什么需要序列化与反序列化 C# 中实现序列化与反序列化的几种方式 XML 序列化与反序列化 JSON 序列化与反序列化 Binary 序列化与反序列化 示例说明 XML 序列化与反序列化示例 JSON 序列化与反序列化示例 什么是序列化与反序列化 序列化(Se…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部