精易论坛

标题: C#中十六进制转GBK编码文本的问题 [打印本页]

作者: 19940321    时间: 2024-11-14 06:45
标题: C#中十六进制转GBK编码文本的问题
刚入门,请教一个低级问题。
就是通过十六进制转字符串,然后保存字符串文本到本地。我使用易语言的写到文件保存出来的文本内容没有问题。但是使用C#保存出来的文本就不对,有些占位符和控制符变成了?
代码和写出结果在下面,求大佬们帮我看看。
易语言代码:
  
写到文件 (取特定目录 ( #系统桌面 )“/测试.txt”, 字节集_十六进制到字节集 (“00AD000000DF000000000200288600000085000000C14000009C4000018A00000D”))


C#代码:
[C#] 纯文本查看 复制代码
private string ConvertFromHexadecimal(string hexadecimalText)
{
    if (hexadecimalText.Length % 2 != 0)
    {
        throw new ArgumentException("输入的十六进制字符串长度必须为偶数");
    }

    byte[] bytes = new byte[hexadecimalText.Length / 2];
    for (int i = 0; i < bytes.Length; i++)
    {
        bytes = Convert.ToByte(hexadecimalText.Substring(i * 2, 2), 16);
    }

    // 使用GBK编码将字节数组转换为文本
    return Encoding.GetEncoding("GBK").GetString(bytes);
}


写出结果:




b801b483-16a7-46dc-8c62-fd5b712f89da.png (11.74 KB, 下载次数: 1)

b801b483-16a7-46dc-8c62-fd5b712f89da.png

作者: baitso    时间: 2024-11-14 10:19
[C#] 纯文本查看 复制代码
 private byte[] ConvertFromHexadecimal(string hexadecimalText)
{
     if (hexadecimalText.Length % 2 != 0)
     {
         throw new ArgumentException("输入的十六进制字符串长度必须为偶数");
     }

     byte[] bytes = new byte[hexadecimalText.Length / 2];
     for (int i = 0; i < bytes.Length; i++)
     {
         bytes = Convert.ToByte(hexadecimalText.Substring(i * 2, 2), 16);
     }
     return bytes;
     // 使用GBK编码将字节数组转换为文本
     //return Encoding.GetEncoding("GBK").GetString(bytes);
}


最后
File.WriteAllBytes("D:\\1.txt", ConvertFromHexadecimal("00AD000000DF000000000200288600000085000000C14000009C4000018A00000D"));
试下是不是你要的效果

作者: JueWar    时间: 2024-11-14 11:03
C#的默认文本编码是utf8  目前流行的编程语言的默认编码格式都是utf8  至于你这种写法 你应该用Byte处理  而不是文本




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4