初学者问题(别骂我低能) 我和一个C的服务器完成Socket通信,但那个程序有Bug,返回的内存空间没有清零,比如返回了一个"123\0567"的字符串,导致我解析出来后变成了"123 567" 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵,C里的字符串以'\0'结束,可java里的String是一个类,用String类的subString试试吧 楼上的,没有用的,转换到String类之后,'\0'就变成空格了,意义都变了. 对c server返回的字符串判断一下不就行了吗 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 45649 50 51 0 52 53 54 123**1处的打印结果说明,虽然在String中'\0'被打成空格,但实际上还是被存为0的,在**2处做个简单的判断,得到要截取的长度再重新构造String。这个方法显得很笨,见笑了,因为我是新手,希望能帮上楼主! 一个简单的socket连接问题。。下面是我的代码。。客户端执行循环后(红字),后面的代码就不执行了。 SVN提交时,怎么设置Message必填 菜鸟,有个想不明白的事情 类型转换迷惑 如何一次性给交互式命令行程序输入,然后逐步读入 请问这段代码为什么无效呢?但不会报错 请教一个xml读取问题 ★:各路高手,近来看看,遇到一个问题,UP也给分!★ 怎么用JavaScript屏蔽打开的新网页右上角的关闭(X)按钮 java核心技术和java编程思想选哪本? 一个线程中的异常问题,对throws关键字理解还不够深刻,请大家指教,附源程序 在applet中如何放入一个jframe
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。
这个方法显得很笨,见笑了,因为我是新手,希望能帮上楼主!