这里有新鲜出炉的 Java 并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
本篇文章主要介绍了 Java 字节流与基本数据类型的转换实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在实际开发中,我们经常遇到与嵌入式进行通信的情况,而由于一些嵌入式设备的处理能力较差,往往以二进制的数据流的形式传输数据,在此将这些常见的转换做一总结。
注意:默认传输时使用小端模式
将字节流转换为 int 类型数据
- public static int getInt(byte[] bytes) {
- return (0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)) | (0xff0000 & (bytes[2] << 16))
- | (0xff000000 & (bytes[3] << 24));
- }
将字节流转换为 long 类型数据
- public static long getLong(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 类型数据
- public static float getFloat(byte[] bytes) {
- int temp = getInt(bytes);
- return Float.intBitsToFloat(temp);
- }
将字节流转换为 double 类型数据
- public static double getDouble(byte[] bytes) {
- long temp = getLong(bytes);
- return Double.longBitsToDouble(temp);
- }
将 int 类型数据转换为字节流
- public static byte[] getByteFromInt(int data) {
- byte[] temp = new byte[4];
- temp[0] = (byte)(0xFF & (data));
- temp[1] = (byte)(0xFF & (data >> 8));
- temp[2] = (byte)(0xFF & (data >> 16));
- temp[3] = (byte)(0xFF & (data >> 24));
- return temp;
- }
将 long 类型数据转换为字节流
- public static byte[] getByteFromLong(long data) {
- byte[] temp = new byte[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));
- return temp;
- }
将 float 类型数据转换为字节流
- public static byte[] getByteFromFloat(float data) {
- byte[] temp = new byte[4];
- int tempInt = 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));
- return temp;
- }
将 double 类型数据转换为字节流
- public static byte[] getByteFromDouble(double data) {
- byte[] temp = new byte[8];
- long tempLong = 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));
- return temp;
- }
来源: http://www.phperz.com/article/17/0822/338233.html