谁能帮忙解释下这段代码string temp = string_to_send.Substring(0, length/2);
byte[] byte_to_send = System.Text.Encoding.Default.GetBytes(temp);
for (int i = 0; i < string_to_send.Length; i += 2)
     byte_to_send[i / 2] = Byte.Parse(string_to_send.Substring(i, 2),
     System.Globalization.NumberStyles.HexNumber);
看不懂~~

解决方案 »

  1.   

    第一句话,是获取string_to_send一半的字符串.
    第二句话,是通过获取的temp字符串生成一个数据.
    第三句话,是遍历string_to_send这个字符串,取得偶数位的字符,然后转换为数字,放到字节数组中.
      

  2.   

    Substring(a,b)  
    //获得字符串字串,开始位置是a,长度是b
    System.Text.Encoding.Default.GetBytes(str)
    //将字符串中所有字符编码成一个字节序列,返回的是一个Byte数组
    Byte.Parse(string_to_send.Substring(i, 2),
         System.Globalization.NumberStyles.HexNumber)
    //将十六进制的数字字符串转换为Byte
      

  3.   

    string temp = string_to_send.Substring(0, length/2);
    byte[] byte_to_send = System.Text.Encoding.Default.GetBytes(temp);
    //将temp编码成一个字节序列,存储在byte_to_send中
    后面的for循环和前面的temp无关,将字符串string_to_send每2位为一组(十六进制)转化为byte类型,并存在了数组里(覆盖了原来由temp产生的字节序列)
    eg:            string string_to_send = "1234abcd";
                Int32 length = string_to_send.Length;
                byte[] byte_to_send = new byte[length / 2];
                for (int i = 0; i < string_to_send.Length; i += 2)
                    byte_to_send[i / 2] = Byte.Parse(string_to_send.Substring(i, 2),System.Globalization.NumberStyles.HexNumber);            Console.WriteLine(BitConverter.ToString(byte_to_send));
      

  4.   

    其实作用就是把string_to_send(字符串)写入到磁卡中,但为什么只截取了一半?还有后面又覆盖了一遍,到底什么意思?但这样的出来的结果是正确的
      

  5.   

    截取了一半(temp)得到的byte数组的内容没什么用,估计是要它的大小...