string msg="0xBBBBBBBB0x000000010x030xDDDDDDDD"//字符已经是16进制的数子。
  int msgLength = msg.Length;
  char[] instructionArr = msg.ToCharArray();//将string转换为char
  byte[] b = new byte[msgLength];
  for (int i = 0; i < msgLength; i++)
  {
     b[i] = instructionArr[i];//这句就出错了。
  }
我的目的就是把msg中的16进制放到b变量中。

解决方案 »

  1.   

     b[i] = (byte)instructionArr[i];//这句就出错了。
      

  2.   

    我想要的结果是 b[0]=0x
     b[1]=BB
     ......
     
    byte中直接存放16进制的数据。
    我的string msg="0xBBBBBBBB0x000000010x030xDDDDDDDD"//字符已经是16进制的数子。所以不用转换
      

  3.   

     b[i] = instructionArr[i];//这句就出错了。
    前面 加上(byte)强制转换下试试。
      

  4.   

    0x不是16进制数,是标识,后面的内容在内存中正好是反着存储的。所以
    0x00000001
    实际在内存中保存为
    {0x01,0x00,0x00,0x00}string msg="0xBBBBBBBB0x000000010x030xDDDDDDDD";
    List<byte> result = new List<byte>();
    string[] fields = msg.Split(new string[] { "0x" }, StringSplitOptions.RemoveEmptyEntries);
    foreach (string item in fields)
    {
        result.AddRange(BitConverter.GetBytes(uint.Parse(item, System.Globalization.NumberStyles.HexNumber)));
    }
    result.ToArray();//这个就是你要的
      

  5.   

                 byte[] buff = new byte[msgLength];
                for (int i = 0; i < buff.Length; i++)
                {
                    buff[i] = Convert.ToByte(instructionArr[i], 16);//转换
                 }
                return buff;
      

  6.   


                String str = "0xBBBBBBBB0x000000010x030xDDDDDDDD";            String[] ss = str.Split(new String[]{"0x"},StringSplitOptions.None);            List<Byte> list = new List<Byte>();            foreach (String s in ss)
                {
                    Byte b;
                    Byte.TryParse(s, System.Globalization.NumberStyles.HexNumber,null,out b);
                    list.Add(b);
                }            foreach (Byte b in list)
                    Console.WriteLine(b);
      

  7.   

      private byte[] ConvertCmd(string _cmd)
            {
                byte[] byte_data=null;
                string tokens = "0xBBBBBBBB0x000000010x030xDDDDDDDD";             byte_data = new byte[tokens.Length/2];
                for (int i = 0; i < byte_data.Length; i++)
                {
                   byte_data[i] =Convert.ToByte(tokens.Substring(i*2,2),16);
                  
                }
                return byte_data;
    }
    这样写就可以了 
      

  8.   

     byte_data[i] = Convert.ToByte(tokens.Substring(i * 2, 2), 16);//未找到任何可识别的数字。
      

  9.   

    Peter200694013
             Byte.TryParse(s, System.Globalization.NumberStyles.HexNumber,null,out b);//这种也不行。(转换成10进制了?)
      

  10.   

    wuyazhe:
     
    result.AddRange(BitConverter.GetBytes(uint.Parse(item, System.Globalization.NumberStyles.HexNumber)));result.ToArray();这是把string msg="0xBBBBBBBB0x000000010x030xDDDDDDDD"转换成其他数字型了。
    这个也不行