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日

相关文章

  • C#关机小程序源码

    对于“C#关机小程序源码”的完整攻略,我将从以下几个方面进行详细讲解: 实现功能及设计思路 编写代码及说明 示例说明 1. 实现功能及设计思路 本小程序的主要功能为实现计算机关机,设计思路为利用C#的系统调用函数,调用Windows的API函数实现计算机的关机操作。 具体实现步骤如下: 创建一个Windows窗口应用程序 在程序中添加一个按钮控件,用于触发计…

    C# 2023年6月1日
    00
  • 关于WPF WriteableBitmap类直接操作像素点的问题

    关于WPF WriteableBitmap类直接操作像素点的问题,可以参考以下攻略: 1. 什么是WriteableBitmap类 WriteableBitmap是WPF中一个重要的类,它可以被用来创建一个用于呈现可写的图像的BitmapSource对象,而且可以以像素为单位进行访问和修改。WriteableBitmap对象的像素数组可以由开发者直接修改,使…

    C# 2023年6月3日
    00
  • EF Core从TPH迁移到TPT

    Intro EF Core支持多种方式处理具有继承关系的表,现在支持TPH、TPC(EF Core 7)、TPT,具体的实现方式可以参考官方文档和这篇文章。 大致总结一下不同的方式的区别:TPH:所有的类型都放在一张表中,使用discriminator字段用以区别不同的类型TPT:不同的子类型有单独的表存放子类独有的字段,父虚类型也有一张单独的表存放共有的字…

    C# 2023年4月18日
    00
  • C#中时间类的使用方法详解

    C#中时间类的使用方法详解 C#中有很多时间类,但最常用的是 DateTime 类,它可以表示一个特定的日期和时间。以下是 DateTime 类的使用方法的详细攻略。 DateTime 类的构造函数 DateTime 类有多个构造函数,其中一些最重要的构造函数如下所示: DateTime(): 创建一个 DateTime 对象,它的值是当前日期和时间。 Da…

    C# 2023年5月31日
    00
  • Java与JavaScript前后端实现手机号验证码一键注册登陆抖音流程

    Java与JavaScript前后端实现手机号验证码一键注册登陆抖音流程 1. 前言 移动互联网时代的到来,改变了人们的生活方式,移动应用程序的流行使得手机成为了人们必不可少的日常工具之一。在移动应用程序的开发中,既要考虑到用户的体验,又要考虑到数据的安全性,因此注册登录及验证码功能至关重要。本篇文章主要介绍在Java与JavaScript前后端实现手机号验…

    C# 2023年5月31日
    00
  • c#.net 常用函数和方法集

    C#.NET 常用函数和方法集 C#.NET 是一种常用的编程语言,拥有丰富的函数和方法集。在本文中,我们将介绍 C#.NET 常用的函数和方法集,以供开发者在编程过程中参考。 字符串处理 字符串截取 使用 Substring 函数可以实现对字符串的截取。 string str = "Hello, World!"; string subS…

    C# 2023年5月31日
    00
  • 详解StackExchange.Redis通用封装类分享

    详解StackExchange.Redis通用封装类分享 前言 本文主要介绍了StackExchange.Redis通用封装类的设计与使用,帮助开发人员更方便地使用Redis。 StackExchange.Redis介绍 StackExchange.Redis是一个开源的Redis驱动程序,是使用C#编写的,支持.NET Framework和.NET Cor…

    C# 2023年5月31日
    00
  • ASP.NET Core MVC如何实现运行时动态定义Controller类型

    ASP.NET Core MVC是一款开源的高性能Web框架,使用C#语言编写,它支持运行在Windows、Linux和macOS操作系统上,为 Web 开发提供了高效、灵活、安全的解决方案。ASP.NET Core MVC的一个重要特点就是支持在运行时动态定义Controller类型。下面是实现该功能的完整攻略和两条示例说明。 1. 动态定义Control…

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