gpt4 book ai didi

c# - 如何将 Hex 转换为 Unicode?

转载 作者:行者123 更新时间:2023-11-30 16:09:34 25 4
gpt4 key购买 nike

我的应用程序从客户端接收十六进制值并将其转换回通常为中文字符的字符。但我无法正确实现。根据我当前的程序,它可以将“e5a682e4bd95313233”转换为“如何123”,但我实际上从客户端收到了“59824F55003100320033”,用于相同的汉字“如何123”,我的程序无法转换回字符串。请帮我解决这个问题。

这是我当前的代码:

        byte[] uniMsg = null;
string msg = "59824F55003100320033";
uniMsg = StringToByteArray(msg.ToUpper());
msg = System.Text.Encoding.UTF8.GetString(uniMsg);


public static byte[] StringToByteArray(String hex)
{
hex = hex.Replace("-", "");
byte[] raw = new byte[hex.Length / 2];
for (int i = 0; i < raw.Length; i++)
{
raw[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
}
return raw;
}

感谢对此的任何帮助。谢谢。

解决方法:

更新了

  msg = System.Text.Encoding.UTF8.GetString(uniMsg);

 msg  = System.Text.Encoding.BigEndianUnicode.GetString(uniMsg)

感谢@CodesInChaos 建议编码类型。

最佳答案

它似乎没有用 UTF8 编码。注意 00 31 00 32 00 33 部分。在 UTF8 中,它只是 31 32 33。我认为 hexstring 在 UTF16 BE 中,因为它每个字符恰好 2 个字节并且它们是 00 填充的。将您的字节数组解码为 UTF16,您将得到一个字符串。然后您可以将其用作字符串,或将其重新转换为您需要的任何其他编码。

关于c# - 如何将 Hex 转换为 Unicode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27396233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com