data!=date这样处理String 不太好。
再看看书吧。

解决方案 »

  1.   

    data   -------    date
      

  2.   

    一个中文字符占字节数2,但str.length表示其长度却还是1,所以你的问题
    “另外test串里有中文字符,在取长度的时候又该怎么得到字符串转换到字节数组的正确长度?”
    是不能通过test.length()或者test.getBytes();转换来得到的。需要自己写转换class。下面我给你一个:
    其中pStrSource是目标字串,pbArDest是用来存放结果的目标数组,piStartPos是字串开始转换处,返回值是转换成数组的字节个数(一个byte即占一个字节)
    public class StrToByCN {//包含中文
      public static int strTobytes(String pStrSource,byte[] pbArDest,int piStartPos) {
        if(piStartPos<0 || pbArDest == null)//起始点和目标数组
          return 0;
        byte[] bArTemp = pStrSource.getBytes();
        int iNormalLen = bArTemp.length;
        if(pbArDest.length < piStartPos+iNormalLen)
          return 0;
        for(int i=0;i<iNormalLen;i++)
          pbArDest[piStartPos+i] = bArTemp[i];
        return (iNormalLen);
      }
    }
      

  3.   

    你的变量名错了datetrans改为datatrans
    一个中文字符占字节数2,但str.length表示其长度却还是1,所以你的问题
    “另外test串里有中文字符,在取长度的时候又该怎么得到字符串转换到字节数组的正确长度?”
    在转换前是无法知道的,
    只能通过test.getBytes();后取数组的长度
      

  4.   

    兄弟,仔细些,你的datetrans应该改为datatrans !
    同意楼上的说法 “通过test.getBytes();后取数组的长度”得到字符串转换到字节数组的正确长度,别试图用String 的length()方法得到,我测试过了的。
      

  5.   

    test="大家好~abc~吃了吗?~123";test.length() = 16
    test.getBytes().length = 22