有一字符串如下:
0xD1020000789CA5914D4AC3401886BFFEA6A9B40B4F10B 25328348D8B4A116CD3A8911AB113052DA58CE9548393A4 245368BD821771E746DDB8103C821BCFE005BA71E3C4568 8A5E8C21966989F67DEEFE59D0400A4F85055F5250950AA 4A8AA416F2A54DA92295798F66A5906F9F2036A184AFC40 44031217E6D4DEC926CD6F403175341BBC441489850DC6D 5454A5D2D3F6EA6DA45BB91DDF6311B8CAE5E1A6830ED3C 8B9261998B5DBE47646F3A91F08824D1B14DB57F9FD913B D44641C8CF443B6892011E51261C7B8EEDF789084B6AE71 0C35E1F07FDDCBF5D646D6AFA1E494726C4BFACC08F982A F198D66121A6748B0CD84ACBF1081A62DBF12E527790B6F 0795884059D8DB84E64B7080AFF95B254E5436EE0D0B175 4A5CE231A3B925CB4A79DEAAB22C35EAC8D0F4967EA09B5 6AF4E1D1C6ADC29A79EDE5FA76FF7CFD39EB2948A2CC6A8 8889D5B126C3E85659385EF2282ECC834384129B198CB8A 145C68CC3B5DAAF98D11F73A8CC9979D83DC4A3A26446CC 353ADF15BBB22C17F21D383BFB387D0C1E8EBAB0267D023 976D5D4请高人解码注意,字符串中的空格是我自己加个,因为csdn认为我的字符串太长了,要求加空格,实际上该字符串中间是没有空格的

解决方案 »

  1.   

    如果是十六进制的字符串形式
    str = str.Substring(2);
    byte[] bytes = new byte[str.Length / 2];
    for (int i = 0; i < bytes.Length; i++)
    {
        bytes[i] = Convert.ToByte(str.Substring(i * 2, 2), 16);
    }得到这样的字节数组,然后再看着办吧
      

  2.   


    string s="";
    byte[] b= System.Text.Encoding.BigEndianUnicode.GetBytes(s); 
    s=BitConverter.ToString(b).Replace("-",""); 
    MessageBox.Show(s); public static string GetChsFromHex(string hex)  
      {  
      byte[] bytes = new byte[hex.Length / 2];  
      for (int i = 0; i < bytes.Length; i++)  
      {  
      try  
      {  
      bytes[i] = byte.Parse(hex.Substring(i * 2, 2),  
      System.Globalization.NumberStyles.HexNumber);  
      }  
      catch  
      {  
      }  
      }  
      System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");  
      return chs.GetString(bytes);  
      }   
      

  3.   

        private void button1_Click(object sender, EventArgs e)
            {
                string s="0xD1020000789CA5914D4AC3401886BFFEA6A9B40B4F10B25328348D8B4A116CD3A8911AB113052DA58CE9548393A4245368BD821771E746DDB8103C821BCFE005BA71E3C45688A5E8C21966989F67DEEFE59D0400A4F85055F5250950AA4A8AA416F2A54DA92295798F66A5906F9F2036A184AFC4044031217E6D4DEC926CD6F403175341BBC441489850DC6D5454A5D2D3F6EA6DA45BB91DDF6311B8CAE5E1A6830ED3C8B9261998B5DBE47646F3A91F08824D1B14DB57F9FD913BD44641C8CF443B6892011E51261C7B8EEDF789084B6AE710C35E1F07FDDCBF5D646D6AFA1E494726C4BFACC08F982AF198D66121A6748B0CD84ACBF1081A62DBF12E527790B6F0795884059D8DB84E64B7080AFF95B254E5436EE0D0B1754A5CE231A3B925CB4A79DEAAB22C35EAC8D0F4967EA09B56AF4E1D1C6ADC29A79EDE5FA76FF7CFD39EB2948A2CC6A88889D5B126C3E85659385EF2282ECC834384129B198CB8A145C68CC3B5DAAF98D11F73A8CC9979D83DC4A3A26446CC353ADF15BBB22C17F21D383BFB387D0C1E8EBAB0267D023976D5D4";
                MessageBox.Show(GetChsFromHex(s.Substring(2))); //显示: ?
                MessageBox.Show(GetChsFromHex(s));  //Input string was not in a correct format
            }        public static string GetChsFromHex(string hex)
            {
                byte[] bytes = new byte[hex.Length / 2];
                for (int i = 0; i < bytes.Length; i++)
                {
                    try
                    {
                        bytes[i] = byte.Parse(hex.Substring(i * 2, 2),
                        System.Globalization.NumberStyles.HexNumber);
                    }
                    catch
                    {
                    }
                }
                System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");
                return chs.GetString(bytes);
            }        private void Form1_Load(object sender, EventArgs e)
            {
                string s = "D1020000789CA5914D4AC3401886BFFEA6A9B40B4F10B25328348D8B4A116CD3A8911AB113052DA58CE9548393A4245368BD821771E746DDB8103C821BCFE005BA71E3C45688A5E8C21966989F67DEEFE59D0400A4F85055F5250950AA4A8AA416F2A54DA92295798F66A5906F9F2036A184AFC4044031217E6D4DEC926CD6F403175341BBC441489850DC6D5454A5D2D3F6EA6DA45BB91DDF6311B8CAE5E1A6830ED3C8B9261998B5DBE47646F3A91F08824D1B14DB57F9FD913BD44641C8CF443B6892011E51261C7B8EEDF789084B6AE710C35E1F07FDDCBF5D646D6AFA1E494726C4BFACC08F982AF198D66121A6748B0CD84ACBF1081A62DBF12E527790B6F0795884059D8DB84E64B7080AFF95B254E5436EE0D0B1754A5CE231A3B925CB4A79DEAAB22C35EAC8D0F4967EA09B56AF4E1D1C6ADC29A79EDE5FA76FF7CFD39EB2948A2CC6A88889D5B126C3E85659385EF2282ECC834384129B198CB8A145C68CC3B5DAAF98D11F73A8CC9979D83DC4A3A26446CC353ADF15BBB22C17F21D383BFB387D0C1E8EBAB0267D023976D5D4";           
                byte[] b = System.Text.Encoding.BigEndianUnicode.GetBytes(s);
                s = BitConverter.ToString(b).Replace("-", "");
                MessageBox.Show(s); //显示一个字符串:每个字符都是0-9的数字;
                MessageBox.Show(GetChsFromHex(s));  //显示空白
            }   
      

  4.   

    你需要先知道存进去的是什么才能找到正确的解码方法。一般情况下使用GetBytes就可以,但目前从结果看,存的内容是经过处理的,或者存入 的是文件