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# 静态类,静态构造函数,静态变量 静态类 在C#中,静态类是一种只包含静态成员的类。不能被实例化,也不能被继承。常用于定义全局函数或者全局变量。 定义方式: static class MyStaticClass { // 静态成员 public static void MyStaticMethod() { Console.WriteLine("…

    C# 2023年6月8日
    00
  • 拦截asp.net输出流并进行处理的方法

    拦截asp.net输出流并进行处理的方法可以通过实现自定义的HttpModule来实现。下面将详细介绍具体的步骤和示例。 第一步:创建自定义HttpModule类 首先,我们需要创建一个自定义的HttpModule类,并实现其核心方法Application_EndRequest。该方法会在每个请求结束后被调用,并且此时应用程序将已处理完整个请求,即可以读写请…

    C# 2023年6月3日
    00
  • ASP.NET Core中的Razor页面使用视图组件

    在 ASP.NET Core 中,可以使用 Razor 页面和视图组件来构建动态 Web 应用程序。视图组件是一种可重用的 UI 组件,可以在多个 Razor 页面中使用。以下是 ASP.NET Core 中 Razor 页面使用视图组件的完整攻略: 步骤一:创建视图组件 在使用视图组件前,需要创建视图组件。可以在 ASP.NET Core 项目中的 Vie…

    C# 2023年5月17日
    00
  • 外键拆分手记

    我习惯性使用OData,它的$expand与层级查询非常好用,这个功能非常依赖于数据库的导航属性,也就是外键结构。最近想着把一个单体的系统拆分为多个小系统,首先需要处理外键依赖的问题。 多个服务各自有各自的数据库,数据库层面并不互通,也就无法使用外键约束。 我使用EF Core来描述数据库的结构,有两个实体类如下: public class AD_Insec…

    C# 2023年4月27日
    00
  • C# SynchronizationContext以及Send和Post使用解读

    C#中的SynchronizationContext是用于处理多线程并发问题的一种机制,它能够确保在多线程环境下的UI操作不会出现问题,保障了程序的稳定性和可靠性。在使用SynchronizationContext时,我们借助它提供的Send和Post方法来将指定的操作添加到指定的队列中,等待处理。 SynchronizationContext的作用 Syn…

    C# 2023年6月6日
    00
  • ASP.net 路径问题 详解

    下面我将为你详细讲解ASP.NET路径问题的攻略。 一、背景知识 在ASP.NET中,路径问题是非常常见的。在编写代码或引用文件时,我们需要使用路径来定位所需的资源或文件。但是,不同的路径表示方式有可能导致不同的结果。因此,了解不同路径的含义和规则是非常重要的。 二、基本概念 在ASP.NET中,我们常使用以下几种路径表示方式: 1. 相对路径 相对路径是以…

    C# 2023年6月3日
    00
  • C# WCF简单入门图文教程(VS2010版)

    C# WCF简单入门图文教程(VS2010版) WCF(Windows Communication Foundation)是一个用于构建分布式应用程序的框架。它提供了一种统一的编程模型,使得开发人员可以使用不同的传输协议和编码方式来实现分布式应用程序。本文将详细讲解如何使用C# WCF进行简单入门,并提供两个示例。 1. 创建WCF服务 首先,我们需要创建一…

    C# 2023年5月15日
    00
  • visual studio 2019正式版安装简单教程

    Visual Studio 2019是微软推出的一款集成开发环境,它支持多种编程语言和平台,包括.NET框架、C++、Python、JavaScript等。本文将提供Visual Studio 2019正式版安装的简单教程,帮助您快速安装和配置Visual Studio 2019。 安装Visual Studio 2019 以下是安装Visual Studi…

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