比如:这是16进制数:“5B6C6973745D0D0A6974656D5F6E6F3D360D0A6974656D303D3430302C20312C20302C5C6673333233325C433031393030305C5331305C63323535323535303030303030C7EBB1A3B3D6B0B2C8ABB3B5BEE00D0A0D0A0D0A”我想转化成:
“[list]
item_no=6
item0=400, 1, 0,\fs3232\C019000\S10\c255255000000请保持安全车距”
谢谢大家了!

解决方案 »

  1.   

    public byte[]  Hex2ByteArr(string src)
    {
        int len = src.Length/2;
        byte[] arr = new byte[len];
        for(int i=0;i<len;i++)
        {
            arr[i] = Convert.ToByte(src.Substring(i*2,2),16);
        }
        return arr;
    }string str="5B6C6973745D0D0A6974656D5F6E6F3D360D0A6974656D303D3430302C20312C20302C5C6673333233325C433031393030305C5331305C63323535323535303030303030C7EBB1A3B3D6B0B2C8ABB3B5BEE00D0A0D0A0D0A";
    byte[] arr = Hex2ByteArr(str);
    string 你要的字符串 = MEncoding.Default.GetString(arr);
      

  2.   

    MEncoding
    晕,多了个字母,还是把namespace加上吧,省得你using了public byte[]  Hex2ByteArr(string src)
    {
        int len = src.Length/2;
        byte[] arr = new byte[len];
        for(int i=0;i<len;i++)
        {
            arr[i] = Convert.ToByte(src.Substring(i*2,2),16);
        }
        return arr;
    }string str="5B6C6973745D0D0A6974656D5F6E6F3D360D0A6974656D303D3430302C20312C20302C5C6673333233325C433031393030305C5331305C63323535323535303030303030C7EBB1A3B3D6B0B2C8ABB3B5BEE00D0A0D0A0D0A";
    byte[] arr = Hex2ByteArr(str);
    string 你要的字符串 = System.Text.Encoding.Default.GetString(arr);
      

  3.   

    Hex2ByteArr是16进制转为byte数组的方法
    你如果不想用,可以直接在代码里写string str="5B6C6973745D0D0A6974656D5F6E6F3D360D0A6974656D303D3430302C20312C20302C5C6673333233325C433031393030305C5331305C63323535323535303030303030C7EBB1A3B3D6B0B2C8ABB3B5BEE00D0A0D0A0D0A";
    int len = src.Length/2;
    byte[] arr = new byte[len];
    for(int i=0;i<len;i++)
    {
        arr[i] = Convert.ToByte(src.Substring(i*2,2),16);
    }
    string 你要的字符串 = System.Text.Encoding.Default.GetString(arr);
      

  4.   

    string s = "5B6C6973745D0D0A6974656D5F6E6F3D360D0A6974656D303D3430302C20312C20302C5C6673333233325C433031393030305C5331305C63323535323535303030303030C7EBB1A3B3D6B0B2C8ABB3B5BEE00D0A0D0A0D0A"; byte[] buffer = typeof(System.Xml.XmlConvert).GetMethod("FromBinHexString", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static, null, new Type[] { typeof(string) }, null).Invoke(null, new object[] { s }) as byte[];
     Console.WriteLine(System.Text.Encoding.GetEncoding("gb2312").GetString(buffer));.NET XMLCONVERT 有这个方法,只不过是internal的,用发射调用就可以了. xml序列华的时候,对于byte 她就是这样编码的
      

  5.   

    to Knight94(愚翁)//你怎么转化的,最好先说说转化的时候用到编码或者方法是什么
    看我的代码,还不明白吗?测试通过符合楼主要求的
      

  6.   

    楼主给出的源字符串是Ansi编码的16进制数字
      

  7.   

    to 看我的代码,还不明白吗?测试通过符合楼主要求的yun~对于字母或者数字来说,我就不多说了
    但是对于汉字来说,使用Encoding.Default不是明智之举。
      

  8.   

    viena() ,您是搞手,谢谢了,结贴,以后多多向您学习!
      

  9.   

    对不起,有错别字,抱歉:“viena() ,您是高手,谢谢了,结贴,以后多多向您学习!”
      

  10.   

    也就是说,对于中文编码转换成16进制,用Encoding.Default不一定有效。
      

  11.   


    Montaque大哥太牛了...... 跟你学了一招 前两天一直因为不能调internal方法而头疼
    刚试了control.sendmessage。几位大哥已经把问题解决了 我就不多嘴了
      

  12.   

    Knight94(愚翁)做事非常严谨啊
    非常认同你的处理问题的思路