!!!需要在NET和Java程序之间进行网络互联的朋友请注意:它们之间的一个细微差别可能让你费劲!!! 上面有个地方写错了,在J2ME中,BtDataOutputStream应该从OutputStream继承。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这应该属于MS排斥Java的原因,Java和其他很多语言通信都存在数据问题。 不是bug,你使用wrintInt(17),当然是0,0,0,17了,int是四个字节,而在.Net中应该是输入的是17的ascii码,那么当然是一个字节了,但是我觉得还是java不会出问题,这样也比较好理解,你在.Net中试试输入一个非常的int看看里面是什么样子的 最主要在c/c++中int和char是可以转换的,而在java中不行 你在java中使用writeByte就不会出错了 你在java中使用writeByte就不会出错了-------------这个当然没有错,但是现在我需要写一个int变量。在我的程序中,那个int变量表示数据长度,这个值可能会超过256个字节,因此必须使用4个字节表示。当然,如果事先把int转换成4个字节,再调用四次writeByte()也没有错,不过这样效率太低了。 这么说只能修改.Net那一端了,其实使用网络传输数据就不能按照各种语言的类型,只能根据最基本的byte来操作,如前几字节是什么什么,后面字节是什么,而不能直接使用类型转换 你看见那一个协议是这么说的:最前面是个int型,后面是个char.你别说是语言之间可能存在传输问题,就是同种语言也有可能,如32位机和64位机通信,那么在c/c++中int分别位32和64位,那么怎么弄呢 to slwqw2(亚洲之鹰) 你以为DataOutputStream里面是怎么做的,当然也是分开四个字节进行写了。所以效率没有什么大问题 public final void writeInt(int v) throws IOException { out.write((v >>> 24) & 0xFF); out.write((v >>> 16) & 0xFF); out.write((v >>> 8) & 0xFF); out.write((v >>> 0) & 0xFF); incCount(4); } to slwqw2(亚洲之鹰) 你以为DataOutputStream里面是怎么做的,当然也是分开四个字节进行写了。所以效率没有什么大问题 public final void writeInt(int v) throws IOException { out.write((v >>> 24) & 0xFF); out.write((v >>> 16) & 0xFF); out.write((v >>> 8) & 0xFF); out.write((v >>> 0) & 0xFF); incCount(4); }--------------不好意思,我是指编程效率,不是运行效率。这是内部实现的,肯定提高了我的编程效率。 你看见那一个协议是这么说的:最前面是个int型,后面是个char.你别说是语言之间可能存在传输问题,就是同种语言也有可能,如32位机和64位机通信,那么在c/c++中int分别位32和64位,那么怎么弄呢-------32和64位通讯超过了我的理解范围 :)如果你一直认为Java没有错,我也没有办法,你有你的习惯。我也有我的习惯,我的习惯跟以前的C++编程习惯一样,就是第一字节在最前面,而不是在最后面。 我觉得在不同的语言中传递信息最好不要过分依赖于字节的安排顺序,你应该在开始就有明确的要求!以前的C++同样的int也不一定是4个字节的,实际上你可能将来传递String也会碰到更种问题,因为可能使用的编码方式不相同我觉得这个是你的考虑不周所造成的,一开始就应该想到在不同语言上传递信息可能出现的问题。你可以认为这个顺序很不爽,这个没有问题啊,你只要简单的extends DataOutputStream修改一个writeInt就行这个其实和Bug一点关系都没有!只是实现的方式不一样而已 2 ChDw: 我现在已经这么做了,不过不是extends DataOutputStream(因为writeInt()是final,不能override),而是OutputStream。恩,说是BUG的确可能有点过了,我收回我说的话。问题结束。 java 看看这个puzzle的输出结果是什么,别上机.... 请问怎样可以不使用布局管理器,而使控件能随窗体大小改变而改变? 小弟新手,什么是批处理,给个例子 求助:关于私有内部类的实例化极其方法的调用? 关于类路径的问题,请教 execl 问题!很简单,大家看看。在线.......... 请问怎么得到系统时间后判断出是星期一的零点? 在java种怎样进行跟踪调试 Java 为什么子类能转换成父类,反之不行? 请教几个类! 100求jxl.*包!!_______JAVA操作EXCEL文件
-------------
这个当然没有错,但是现在我需要写一个int变量。在我的程序中,那个int变量表示数据长度,这个值可能会超过256个字节,因此必须使用4个字节表示。当然,如果事先把int转换成4个字节,再调用四次writeByte()也没有错,不过这样效率太低了。
public final void writeInt(int v) throws IOException {
out.write((v >>> 24) & 0xFF);
out.write((v >>> 16) & 0xFF);
out.write((v >>> 8) & 0xFF);
out.write((v >>> 0) & 0xFF);
incCount(4);
}
public final void writeInt(int v) throws IOException {
out.write((v >>> 24) & 0xFF);
out.write((v >>> 16) & 0xFF);
out.write((v >>> 8) & 0xFF);
out.write((v >>> 0) & 0xFF);
incCount(4);
}--------------不好意思,我是指编程效率,不是运行效率。这是内部实现的,肯定提高了我的编程效率。
以前的C++同样的int也不一定是4个字节的,实际上你可能将来传递String也会碰到更种问题,因为可能使用的编码方式不相同
我觉得这个是你的考虑不周所造成的,一开始就应该想到在不同语言上传递信息可能出现的问题。
你可以认为这个顺序很不爽,这个没有问题啊,你只要简单的extends DataOutputStream
修改一个writeInt就行
这个其实和Bug一点关系都没有!只是实现的方式不一样而已