比如我有一个字节数组byte[12],前4个字节为一个整数,中间4个字节为一个float类型的数,后四个字节为一个整数,我该如何获取这3个数值。能不能定义一个结构体,像c++中的指针那样,直接类型转换一下。
请指教,谢谢。

解决方案 »

  1.   

    似乎没c++那么方便  得一个个取出来移位运算成想要得类型
    <<24 | << 16 | << 8 |
      

  2.   

    public static void main(String[] args) throws Exception{
            // TODO Auto-generated method stub
            System.out.println(Integer.toHexString(5678));
            System.out.println(Integer.toHexString(56787890));
            byte[] bt = new byte[16];
            //转化为4字节的56787890
            bt[0] = 3;
            bt[1] = 98;
            bt[2] = -125;
            bt[3] = -78;
            //转化为8字节的12345.67(double型)
            bt[4] = 64;
            bt[5] = -56;
            bt[6] = 28;
            bt[7] = -43;
            bt[8] = -62;
            bt[9] = -113;
            bt[10] = 92;
            bt[11] = 41;
            //转化为4字节的5678
            bt[12] = 0;
            bt[13] = 0;
            bt[14] = 22;
            bt[15] = 46;
            
            ByteArrayInputStream bi = new ByteArrayInputStream(bt);
            DataInputStream di = new DataInputStream(bi);
            System.out.println(di.readInt());
            System.out.println(di.readDouble());        
            System.out.println(di.readInt());
        }
      

  3.   


    System.out.println((((bt[0] & 0xff) << 24) | ((bt[1] & 0xff) << 16) |((bt[2] & 0xff) << 8) | (bt[3] & 0xff)));
      

  4.   


    ByteArrayInputStream() -----> DataInputStream() ------> readXXX()
      

  5.   

    lz,难道看不出来我的方法就是xunyiren的方法么,才给我5分!太不厚道了吧