客户端有一组数据{2,0,92,0,0,127,0,0,0,0,255,255,255,255,0,160,162,4,248,87,245,0,0,0,0,0,88,250,18,0,150,225,81,0,52,250,18,0,24,226,81,0,88,250,18,0,96,250,18,0,123,226,81,0,88,250,18,0,128,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,18,0,235,39,83,0,108,250,18,0,186,48,83,0};用 OutputStream out;out.write(byte[] data)  只能发送byte字节流.而我上面的有很多 数据 已经 超出 byte范围 -128--127了这个问题怎么解决. 
服务器是用C++写的,C++有 无符号 byte,所以java 就有这个问题存在!

解决方案 »

  1.   

    不能把一个byte断成2个来看么?数据形式已经固定了不能改动么?
    等高人吧~
      

  2.   

    这没有问题:虽然java会把这些数据当成有符号数,但信息并没有丢失,服务端把它当成无符号数读取就行了
      

  3.   

    byte是有符号的,只要给定的数不超过255,就没有事,超过127的无符号整数,转换成
    byte是会变成负数,但是在内存中表示还是一样的,你传过去c++那变认识。见如下代码:    public static void main(String[] args) {
            int i = 200;
            byte b = (byte)i;
            System.out.println(b);
        }
      

  4.   

       用可以DataOutputStream 
      

  5.   

    C++的無號 byte 範圍在 0~255 所以是可以直接轉型。
    只是如果你原來是 int 數組,就得逐一轉型成byte
    然後byte轉回int時 用 0xFF遮罩就行。
    ex
    int a = 255;
    byte b = (byte)a;
    int c = 0xFF & b;
      

  6.   

    我这些天也一直在做java读写二进制文件的东东
    总的来说java没有无符号型数据还是比较麻烦的
    不过这对java写二进制数据没有影响,只对读取二进制文件有影响,这跟数字的内部存储方式有关。按你说的 如果加密对有无符号敏感的话 必须得修改加密算法嘞