public byte[] StrTranBuf()
        {
            string srcFrame = "fe dc ba 98 76 54 32 10";    //源字符串
            string[] strBuf;                                //中间交换的临时字符串
            byte[] m_FrameBuf;                              //由字符串转化过的字符串报文            strBuf = srcFrame.Split(new char[] { ' ' });
            m_FrameBuf = new byte[strBuf.GetLength(0)];
            for (int i = 0; i < strBuf.GetLength(0); i++)
            {
                strBuf[i] = "0x" + strBuf[i];
                m_FrameBuf[i] = System.Convert.ToByte(strBuf[i], 16);
            }            return m_FrameBuf;
        }
我是一个C#新手,原来写过一点VB6.0的程序
上面的函数的功能是想将字符串"fe dc ba 98 76 54 32 10"转换为"0xfe 0xdc 0xba 0x98 0x76 0x54 0x32 0x10"的byte数组
功能虽然是实现了
但感觉代码实现的很差,感觉很VB,呵呵
所以请高手指导一下
帮我代码改一改,能不能尽量用C#常用的方法实现该功能
谢谢了

解决方案 »

  1.   

    srcFrame.Split().Select(s => Convert.ToByte(s, 16)).ToArray();
      

  2.   


    void Main()
    {
      string srcFrame = "fe dc ba 98 76 54 32 10"; 
        byte[] m_FrameBuf=  HexStringToByteArray(srcFrame);

    }
      private static byte[] HexStringToByteArray(string s)
    {
    s = s.Replace(" ", "");
    byte[] buffer = new byte[s.Length / 2];
    for (int i = 0; i < s.Length; i += 2)
    buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
    return buffer;
    }
      

  3.   


    void Main()
    {
          //.net 3.0以上可以用linq
       string srcFrame = "fe dc ba 98 76 54 32 10"; 
        byte[] m_FrameBuf=srcFrame.Split().Select(s=>Convert.ToByte(s,16)).ToArray();
     

    }