解决方案 »

  1.   

    懒得看LZ的这多代码。只说一个问题:
    st = (short)rand.Next(200);
                             datas[204 + i] = (Char)(st >> 8);
                             datas[254 + i] = (Char)(st);
    st>>8是右移8位,本来st就只占有右边的8位(<256).你一右移,不是都变成0了么?你确定这是你的目的?
      

  2.   

    是没问题,你断点执行一下。我是想获取data1的个数,需要做别的事。datas的数是不一样的,导致最后data1的个数是不定的,这就麻烦了
      

  3.   

    UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。
    ====================================
    不知道是否准确,你可以查查,我觉得这可能是你的问题所在。
    要想一一对应,使用ASCII或UTF32应该可以,你测试下。
      

  4.   

    datas[354 + i] = (Char)(st);
    把short型强转成char,付给char,当st>127的时候,其实这句没实现取低8位吧,还是把整个数付给了datas,再getBytes就会出错,
    应该 datas[354 + i] = (Char)(st &0xFF);