我和一个C的服务器完成Socket通信,但那个程序有Bug,返回的内存空间没有清零,比如返回了一个"123\0567"的字符串,导致我解析出来后变成了"123 567"

解决方案 »

  1.   

    呵呵,C里的字符串以'\0'结束,可java里的String是一个类,用String类的subString试试吧
      

  2.   

    楼上的,没有用的,转换到String类之后,'\0'就变成空格了,意义都变了.
      

  3.   

    对c server返回的字符串判断一下不就行了吗
      

  4.   

    public class Test {
    public static void main(String[] args) {
    byte [] bs;
    String c="123"+ '\0' +"456";

    System.out.println(c);

    bs=c.getBytes();
    for(int i=0;i<bs.length;i++) {    //**1
    System.out.print((int)bs[i] + " ");
    }
    System.out.println(); int length=-1;
    while (bs[++length]!=(byte)0);    //**2
    c=new String(bs,0,length);
    System.out.println(c);


    }
    }
    输出结果是:
    123 456
    49 50 51 0 52 53 54 
    123**1处的打印结果说明,虽然在String中'\0'被打成空格,但实际上还是被存为0的,在**2处做个简单的判断,得到要截取的长度再重新构造String。
    这个方法显得很笨,见笑了,因为我是新手,希望能帮上楼主!