(ByteBuffer)buffer
这样强制转换好想可以吧:)

解决方案 »

  1.   

    你可以试试objectbuffer(有可能名字不对,记不清了)
      

  2.   

    是要实现
    Class buffer.getClass(long from, long offset)
    吗?
      

  3.   

    如果你获得的数据包本身就是MyDefineClass强制得到的BYTE数据包,那么楼上的办法是一定可行的。或者说存在类的继承关系时候,也可以,不过顺序是有要求的。
      

  4.   

    直接用你定义的类强制转换就可以了
    (Mybuffer)buffer.get(MyDefineClass,41);
      

  5.   

    兄弟们,好象都不行啊!
    我的意思是
    ByteBuffer buffer = ByteBuffer.allocate(41);  //41为自定义的类的大小
    buffer.put(buff,0,41);  //buff 为我得到的数据包
    现在我该如何将buffer还原为我定义的类啊!
    既MyDefineClass MyClass = new MyDefineClass();
    如何将buffer中的内容给MyClass谢谢楼上的兄弟们个的建议!
      

  6.   

    你是要将buffer还原成类还是对象?
      

  7.   

    TO :topbit(无影雷霆)   还原成对象啊?就是将buffer 强制转换成我自定义的类的对象
      就是实现如下:
       MyDefineClass MyClass = new MyDefineClass()
       MyClass = (MyDefineClass)buffer;
     
    该如何实现啊??????
      

  8.   

    是不是这个意思:
    ByteBuffer buffer = ...
    ...
    byte[] dat = buffer.getBytes(0, 41);
    ByteArrayInputStream bis = new ByteArrayInputStream(dat);
    ObjectInputStream ois = new ObjectInputStream(bis);
    MyDefineClass obj = (MyDefineClass) ois.readObject();
      

  9.   

    TO :cbhyk()
    ObjectInputStream ois = new ObjectInputStream(bis);
    这句话跳出一个异常啊!
    怎么回事啊!
    谢谢啊
      

  10.   

    错误为java.io.StreamCorruptedException: invalid stream header
      

  11.   

    这说明dat中取到的数据不是一个对象
      

  12.   

    但确实是一个结构体啊!
    是这样的情况:
    受到服务器中受到数据包,数据包是许多的结构体(用vc写的struct )!保存到ByteBuffer 中!
    我在取出41个byte,一个结构体的大小,结果就出现上面的问题了!
      

  13.   

    Java对象和vc的struct的二进制结构是完全不一样的,不可能直接转换成Java对象,只用Java重新实现该struct。如:在vc中:
    struct data_struct
    {
        long data1;
        char data2;
        ...
    };在Java中
    public class DataStruct
    {
        int data1;
        byte data2;
        ...    public DataStruct(byte[] data)
        {
             DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data));
             data1 = dis.readInt();
             data2 = dis.readByte();
             ...
        }
    }
      

  14.   

    再问cbhyk我在VC中有一个unsigned byte 来放一个0~~255的数字
    现在在java中有数据类型来放0~255的数呢?要求是一个字节啊!就是8位啊!
    不能有short int 或long
      

  15.   

    TO cbhyk:
    byte就是8位,但它表示-127----128 啊。
    我要表示为0---255
    谢谢你的指教
    能把你的联系方式告诉我吧!我感觉你好厉害啊?
      

  16.   

    如果是用于表示,-127~128和0~255没什么区别,都是0x00~0xff
    如果用于计算和显示,把它和0xff相与就成了整数0~255