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

如何获得C#中Unicode字符的十六进制表示形式?,c#,string,unicode,C#,String,Unicode,这是我的密码: var hexString = BitConverter.ToString(Encoding.Unicode.GetBytes("ABCD")); hexString = Regex.Replace(hexString, "[-]", string.Empty); 我得到的结果是: 4100420043004400 我应该得到: 0041004200430044 这看起来像是一个尾随问题,以“00”结尾,但当我尝试使用特殊字符时,实际上会出现其他错误 例如,希腊字母crm

这是我的密码:

var hexString = BitConverter.ToString(Encoding.Unicode.GetBytes("ABCD"));

hexString = Regex.Replace(hexString, "[-]", string.Empty);
我得到的结果是:

4100420043004400
我应该得到:

0041004200430044
这看起来像是一个尾随问题,以“00”结尾,但当我尝试使用特殊字符时,实际上会出现其他错误

例如,希腊字母crmk_

应该是
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();
}

结果是一样的。

您可以使用Unicode编码


试试看-它会给你你想要的东西(即'ABCD'的
0041004200430044
)-只需将Unicode更改为BigendiaUnicode即可。

你可以使用Unicode编码

试试看-它会给你你想要的(例如,
0041004200430044
for'ABCD')-只需将Unicode更改为BigendiaUnicode即可