• 技术文章 >Java >java教程

    Java字节流与基本数据类型的转换实例详解

    怪我咯怪我咯2017-07-02 10:18:38原创1221
    本篇文章主要介绍了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;
    }

    以上就是Java字节流与基本数据类型的转换实例详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Java 类型 数据
    上一篇:JAVA中Spring自动扫描无法扫描jar包中bean的解决方法 下一篇:Java连接mysql对反斜杠”\“转义的实例
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• Java基础归纳之枚举• 完全掌握java之String类• 带你搞懂Java结构化数据处理开源库SPL• 一文搞懂Java接口• 详细整理java枚举的使用总结
    1/1

    PHP中文网