日期:2014-05-20  浏览次数:20773 次

急问:java基础问题,关于访问字节数组时的类型转换问题。
比如我有一个字节数组byte[12],前4个字节为一个整数,中间4个字节为一个float类型的数,后四个字节为一个整数,我该如何获取这3个数值。

能不能定义一个结构体,像c++中的指针那样,直接类型转换一下。
请指教,谢谢。

------解决方案--------------------
似乎没c++那么方便 得一个个取出来移位运算成想要得类型
< <24 | < < 16 | < < 8 |
------解决方案--------------------
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());
}
------解决方案--------------------

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