上面有个地方写错了,在J2ME中,BtDataOutputStream应该从OutputStream继承。

解决方案 »

  1.   

    这应该属于MS排斥Java的原因,Java和其他很多语言通信都存在数据问题。
      

  2.   

    不是bug,你使用wrintInt(17),当然是0,0,0,17了,int是四个字节,而在.Net中应该是输入的是17的ascii码,那么当然是一个字节了,但是我觉得还是java不会出问题,这样也比较好理解,你在.Net中试试输入一个非常的int看看里面是什么样子的
      

  3.   

    最主要在c/c++中int和char是可以转换的,而在java中不行
      

  4.   

    你在java中使用writeByte就不会出错了
      

  5.   

    你在java中使用writeByte就不会出错了
    -------------
    这个当然没有错,但是现在我需要写一个int变量。在我的程序中,那个int变量表示数据长度,这个值可能会超过256个字节,因此必须使用4个字节表示。当然,如果事先把int转换成4个字节,再调用四次writeByte()也没有错,不过这样效率太低了。
      

  6.   

    这么说只能修改.Net那一端了,其实使用网络传输数据就不能按照各种语言的类型,只能根据最基本的byte来操作,如前几字节是什么什么,后面字节是什么,而不能直接使用类型转换
      

  7.   

    你看见那一个协议是这么说的:最前面是个int型,后面是个char.你别说是语言之间可能存在传输问题,就是同种语言也有可能,如32位机和64位机通信,那么在c/c++中int分别位32和64位,那么怎么弄呢
      

  8.   

    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);
        }
      

  9.   

    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);
        }--------------不好意思,我是指编程效率,不是运行效率。这是内部实现的,肯定提高了我的编程效率。
      

  10.   

    你看见那一个协议是这么说的:最前面是个int型,后面是个char.你别说是语言之间可能存在传输问题,就是同种语言也有可能,如32位机和64位机通信,那么在c/c++中int分别位32和64位,那么怎么弄呢-------32和64位通讯超过了我的理解范围 :)如果你一直认为Java没有错,我也没有办法,你有你的习惯。我也有我的习惯,我的习惯跟以前的C++编程习惯一样,就是第一字节在最前面,而不是在最后面。
      

  11.   

    我觉得在不同的语言中传递信息最好不要过分依赖于字节的安排顺序,你应该在开始就有明确的要求!
    以前的C++同样的int也不一定是4个字节的,实际上你可能将来传递String也会碰到更种问题,因为可能使用的编码方式不相同
    我觉得这个是你的考虑不周所造成的,一开始就应该想到在不同语言上传递信息可能出现的问题。
    你可以认为这个顺序很不爽,这个没有问题啊,你只要简单的extends DataOutputStream
    修改一个writeInt就行
    这个其实和Bug一点关系都没有!只是实现的方式不一样而已
      

  12.   

    2  ChDw: 我现在已经这么做了,不过不是extends DataOutputStream(因为writeInt()是final,不能override),而是OutputStream。恩,说是BUG的确可能有点过了,我收回我说的话。问题结束。