c# - 如何将包含十六进制字符的字符串转换为字符串

标签 c# string escaping hex

例如,我从谷歌获得了一个代码。 下面的示例在字符串中包含非 ascii 字符。 我想要的是编写一个可以将它们全部转换为 ASCII 字符串的函数。

{e:"vLuDULDKEomjiAfgo4CwBg",c:0,u:"https://www.google.com/complete/search?client\x3dserp\x26hl\x3den\x26sugexp\x3dles%3B\x26gs_nf\x3d3\x26pq\x3dC%23%20decode%20hex%20string%20to%20string\x26cp\x3d11\x26gs_id\x3d3w8\x26xhr\x3dt\x26q\x3dhow%20to%20conv\x26tch\x3d1\x26ech\x3d78\x26psi\x3dDrqDUKC_I86fiAfLrYCgCw.1350810126009.3",d:"[\x22how to conv\x22,[[\x22how to conv\\u003Cb\\u003Eert pdf to word\\u003C\\/b\\u003E\x22,0,[]],[\x22how to conv\\u003Cb\\u003Eert flv to mp3\\u003C\\/b\\u003E\x22,0,[]],[\x22how to conv\\u003Cb\\u003Eert prc to pdf\\u003C\\/b\\u003E\x22,0,[]],[\x22how to conv\\u003Cb\\u003Eert jpg to pdf\\u003C\\/b\\u003E\x22,0,[]],[\x22how to conv\\u003Cb\\u003Eert pdf to epub\\u003C\\/b\\u003E\x22,0,[]],[\x22how to conv\\u003Cb\\u003Eert cr2 to jpeg\\u003C\\/b\\u003E\x22,0,[]],[\x22how to conv\\u003Cb\\u003Eert pdf to excel\\u003C\\/b\\u003E\x22,0,[]],[\x22how to conv\\u003Cb\\u003Eert amr to mp3\\u003C\\/b\\u003E\x22,0,[]],[\x22how to conv\\u003Cb\\u003Eert prc to epub\\u003C\\/b\\u003E\x22,0,[]],[\x22how to conv\\u003Cb\\u003Eert flv to avi\\u003C\\/b\\u003E\x22,0,[]]],{\x22j\x22:\x223w8\x22,\x22q\x22:\x22HhWOfQJyxGUsSNB1855GU4lNjzU\x22}]"}/*""*/

这是我的函数,但它不适用于上面的字符串:

        public static string DecodeHex(string data)
    {
        data = data.Replace("\x22", @"""");
        data = data.Replace("\x23", "#");
        data = data.Replace("\x24", "$");
        data = data.Replace("\x25", "%");
        data = data.Replace("\x26", "&");
        data = data.Replace("\x27", "'");
        data = data.Replace("\x28", "(");
        data = data.Replace("\x29", ")");
        data = data.Replace("\x2a", "*");
        data = data.Replace("\x2b", "+");
        data = data.Replace("\x2c", ",");
        data = data.Replace("\x2d", "-");
        data = data.Replace("\x2e", ".");
        data = data.Replace("\x2f", "/");
        data = data.Replace("\x30", "0");
        data = data.Replace("\x31", "1");
        data = data.Replace("\x32", "2");
        data = data.Replace("\x33", "3");
        data = data.Replace("\x34", "4");
        data = data.Replace("\x35", "5");
        data = data.Replace("\x36", "6");
        data = data.Replace("\x37", "7");
        data = data.Replace("\x38", "8");
        data = data.Replace("\x39", "9");
        data = data.Replace("\x3a", ":");
        data = data.Replace("\x3b", ";");
        data = data.Replace("\x3c", "<");
        data = data.Replace("\x3d", "=");
        data = data.Replace("\x3e", ">");
        data = data.Replace("\x3f", "?");
        return data;
    }

感谢回复。

最佳答案

string url = "https://www.google.com/complete/search?client\x3dserp\x26hl\x3den\x26sugexp\x3dles%3B\x26gs_nf\x3d3\x26pq\x3dC%23%20decode%20hex%20string%20to%20string\x26cp\x3d11\x26gs_id\x3d3w8\x26xhr\x3dt\x26q\x3dhow%20to%20conv\x26tch\x3d1\x26ech\x3d78\x26psi\x3dDrqDUKC_I86fiAfLrYCgCw.1350810126009.3";
Uri uri = new Uri(url);
Console.WriteLine(uri.ToString());

关于c# - 如何将包含十六进制字符的字符串转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12996566/

相关文章:

c# - 在 C# 中将字符串转换为画笔/画笔颜色名称

python - Python中字符串的条件显示

java - == 与 Enum name() 和 toString()

image - 在 Markdown 中包含图像时如何转义文件名中的空格?

mysql - 转义knex mysql查询语句

c# - 当我在 Visual Studio(设计器 View )中重建时,我的 userControl 中的更改被删除

c# - 带有字符串参数的主方法入口点给出 "does not contain ... suitable ... entry point"错误

c# - 我需要 visual studio 2012 for .NET 4.5 还是 visual studio 2010 适合 4.5?

Java:toString 与字符串连接?

java - 使用转义 java 创建字符串