急问:java基础问题,关于访问字节数组时的类型转换问题。 比如我有一个字节数组byte[12],前4个字节为一个整数,中间4个字节为一个float类型的数,后四个字节为一个整数,我该如何获取这3个数值。能不能定义一个结构体,像c++中的指针那样,直接类型转换一下。请指教,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 似乎没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()); } System.out.println((((bt[0] & 0xff) << 24) | ((bt[1] & 0xff) << 16) |((bt[2] & 0xff) << 8) | (bt[3] & 0xff))); ByteArrayInputStream() -----> DataInputStream() ------> readXXX() lz,难道看不出来我的方法就是xunyiren的方法么,才给我5分!太不厚道了吧 小子请求给为仙人指点一下BigInteger类的有关内容 关于广域网的访问!!! 200分求助,升级mysql驱动到3.1.7设置字符编码没有任何作用了!!!! 初学者的求救 一个集合,怎么样才能把符合某一特征的数据取出来? 初学JAVA,想向J2EE发展,应该看些什么书? 那里下载Creator.(急) 鄙人愚钝,请高人明示有关weblogic中连接池与数据源的配置。 java 从入门到精通 JNI DLL 和SOCKET的问题! PreparedStatement.setNull()的问题 JAVA性能与C++的一些疑惑(初级)
<<24 | << 16 | << 8 |
// 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());
}
System.out.println((((bt[0] & 0xff) << 24) | ((bt[1] & 0xff) << 16) |((bt[2] & 0xff) << 8) | (bt[3] & 0xff)));
ByteArrayInputStream() -----> DataInputStream() ------> readXXX()