如何在 C# 中获取 Unicode 字符的十六进制表示形式

本文关键字:十六进制 表示 字符 Unicode 获取 | 更新日期: 2023-09-27 17:56:07

这是我的代码:

var hexString = BitConverter.ToString(Encoding.Unicode.GetBytes("ABCD"));
hexString = Regex.Replace(hexString, "[-]", string.Empty);

我得到的结果:

4100420043004400

我应该得到:

0041004200430044

这看起来像一个尾随的,以"00"问题结尾,但在尝试使用特殊字符时,我实际上会遇到其他错误。

例如希腊字母Ο

应该039f但我的代码给了我9F03

我什至尝试了在另一个问题中找到的以下代码:

public static string ByteArrayToString(byte[] ba)
{
    StringBuilder hex = new StringBuilder(ba.Length * 2);
    foreach (byte b in ba)
        hex.AppendFormat("{0:x2}", b);
    return hex.ToString();
}

结果是一样的。

如何在 C# 中获取 Unicode 字符的十六进制表示形式

你会得到用Little Endian编码的Unicode。

尝试Encoding.BigEndianUnicode - 它会给你你想要的(即 0041004200430044 'ABCD') - 只需将 Unicode 更改为 BigEndianUnicode。