Java字节流与基本数据类型的转换实例
在实际开发中,我们经常遇到与嵌入式进行通信的情况,而由于一些嵌入式设备的处理能力较差,往往以二进制的数据流的形式传输数据,在此将这些常见的转换做一总结。
注意:默认传输时使用小端模式
将字节流转换为int类型数据
publicstaticintgetInt(byte[]bytes){ return(0xff&bytes[0])|(0xff00&(bytes[1]<<8))|(0xff0000&(bytes[2]<<16)) |(0xff000000&(bytes[3]<<24)); }
将字节流转换为long类型数据
publicstaticlonggetLong(byte[]bytes){ return((0xffL&(long)bytes[0])|(0xff00L&((long)bytes[1]<<8))|(0xff0000L&((long)bytes[2]<<16)) |(0xff000000L&((long)bytes[3]<<24))|(0xff00000000L&((long)bytes[4]<<32)) |(0xff0000000000L&((long)bytes[5]<<40))|(0xff000000000000L&((long)bytes[6]<<48)) |(0xff00000000000000L&((long)bytes[7]<<56))); }
将字节流转换为float类型数据
publicstaticfloatgetFloat(byte[]bytes){ inttemp=getInt(bytes); returnFloat.intBitsToFloat(temp); }
将字节流转换为double类型数据
publicstaticdoublegetDouble(byte[]bytes){ longtemp=getLong(bytes); returnDouble.longBitsToDouble(temp); }
将int类型数据转换为字节流
publicstaticbyte[]getByteFromInt(intdata){ byte[]temp=newbyte[4]; temp[0]=(byte)(0xFF&(data)); temp[1]=(byte)(0xFF&(data>>8)); temp[2]=(byte)(0xFF&(data>>16)); temp[3]=(byte)(0xFF&(data>>24)); returntemp; }
将long类型数据转换为字节流
publicstaticbyte[]getByteFromLong(longdata){ byte[]temp=newbyte[8]; temp[0]=(byte)(0xFF&(data)); temp[1]=(byte)(0xFF&(data>>8)); temp[2]=(byte)(0xFF&(data>>16)); temp[3]=(byte)(0xFF&(data>>24)); temp[4]=(byte)(0xFF&(data>>32)); temp[5]=(byte)(0xFF&(data>>40)); temp[6]=(byte)(0xFF&(data>>48)); temp[7]=(byte)(0xFF&(data>>56)); returntemp; }
将float类型数据转换为字节流
publicstaticbyte[]getByteFromFloat(floatdata){ byte[]temp=newbyte[4]; inttempInt=Float.floatToIntBits(data); temp[0]=(byte)(0xFF&(tempInt)); temp[1]=(byte)(0xFF&(tempInt>>8)); temp[2]=(byte)(0xFF&(tempInt>>16)); temp[3]=(byte)(0xFF&(tempInt>>24)); returntemp; }
将double类型数据转换为字节流
publicstaticbyte[]getByteFromDouble(doubledata){ byte[]temp=newbyte[8]; longtempLong=Double.doubleToLongBits(data); temp[0]=(byte)(0xFF&(tempLong)); temp[1]=(byte)(0xFF&(tempLong>>8)); temp[2]=(byte)(0xFF&(tempLong>>16)); temp[3]=(byte)(0xFF&(tempLong>>24)); temp[4]=(byte)(0xFF&(tempLong>>32)); temp[5]=(byte)(0xFF&(tempLong>>40)); temp[6]=(byte)(0xFF&(tempLong>>48)); temp[7]=(byte)(0xFF&(tempLong>>56)); returntemp; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。