当前位置: 首页 > 知识库问答 >
问题:

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

阎咏思
2023-03-14

我有一个像“示例”这样的字符串。我想得到十六进制格式的字符串;像这样:

"796173767265"

请给出C#语法。

共有3个答案

秦鸿羽
2023-03-14

对于Unicode支持:

public class HexadecimalEncoding
{
    public static string ToHexString(string str)
    {
        var sb = new StringBuilder();

        var bytes = Encoding.Unicode.GetBytes(str);
        foreach (var t in bytes)
        {
            sb.Append(t.ToString("X2"));
        }

        return sb.ToString(); // returns: "48656C6C6F20776F726C64" for "Hello world"
    }

    public static string FromHexString(string hexString)
    {
        var bytes = new byte[hexString.Length / 2];
        for (var i = 0; i < bytes.Length; i++)
        {
            bytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
        }

        return Encoding.Unicode.GetString(bytes); // returns: "Hello world" for "48656C6C6F20776F726C64"
    }
}
屠德宇
2023-03-14

在.NET 5.0及更高版本中,可以使用转换。ToHexString()方法。

using System;
using System.Text;

string value = "Hello world";

byte[] bytes = Encoding.UTF8.GetBytes(value);

string hexString = Convert.ToHexString(bytes);

Console.WriteLine($"String value: \"{value}\"");
Console.WriteLine($"   Hex value: \"{hexString}\"");

运行上面的示例代码,您将得到以下输出:

String value: "Hello world"
   Hex value: "48656C6C6F20776F726C64"
强硕
2023-03-14

首先,您需要将其放入一个字节[]中,因此请执行以下操作:

byte[] ba = Encoding.Default.GetBytes("sample");

然后你可以得到字符串:

var hexString = BitConverter.ToString(ba);

现在,这将返回一个带有破折号(-)的字符串,因此您可以简单地使用它:

hexString = hexString.Replace("-", "");

如果你愿意,可以摆脱那些。

注意:如果需要,您可以使用不同的编码

 类似资料:
  • 问题内容: 要将String转换为十六进制,我正在使用: 在此处投票最高的答案中对此进行了概述:在Java中将 字符串转换为十六进制 我该如何反向执行,即将十六进制转换为字符串? 问题答案: 您可以从转换后的字符串中进行重构,这是一种实现方法: 另一种方法是使用,从包: 单元测试以验证: 注:领先剥离的仅仅是必要的,因为的你的填充方法。如果您不介意将其替换为简单的,则可以将此行放在:

  • 问题内容: 我想将十六进制字符串转换为二进制字符串。例如,十六进制2是0010。下面是代码: 但是,这仅适用于十六进制0-9;它不适用于十六进制A-F,因为它使用。谁能增强它? 问题答案: 您需要告诉Java int是十六进制的,如下所示:

  • 问题内容: 我编写了一个简单的程序,用于在Java中向串行端口发送和接收数据。我通过回送测试(Rx到Tx)连接串行端口设备。它工作正常。但我无法发送和接收十六进制数据到串行端口和接收串行端口。在我的设备中使用了FT232BL芯片,因此是否需要任何dll或其他库来将十六进制数据发送和接收到串行端口设备。我的代码如下。 问题答案: 十六进制: 十六进制为:

  • 问题内容: 我发现将十六进制转换为二进制的方式如下: 尽管此方法适用于较小的十六进制数,但以下十六进制数 抛出一个 因此,我编写了以下似乎可行的方法: 上面的方法基本上接受十六进制字符串中的每个字符,并在必要时将其转换为等价的二进制零,然后将其连接到返回值。这是执行转换的正确方法吗?还是我忽略了一些可能导致我的方法失败的事情? 在此先感谢您的协助。 问题答案: 会做你想要的。只需传递2的基数即可。

  • 问题内容: 我需要将二进制字符串转换为十六进制字符串,但是我有问题。我通过这种方法将二进制字符串转换为十六进制字符串: 没关系!但是我丢失了字符串左侧的零。例如: 该方法返回此:123456789ABCDEF,但我想返回此: 00000123456789ABCDEF 问题答案: 而不是我将使用解析值,然后以所需的宽度(在您的示例中为21)输出值: