Java 中的 long 与 byte 互转_java long转byte数组-程序员宅基地

技术标签: JAVA  

long 占 8 个字节,在网络传输时经常用到!


public static byte[] LongToBytes(long values) {  
     byte[] buffer = new byte[8]; 
     for (int i = 0; i < 8; i++) {   
          int offset = 64 - (i + 1) * 8;    
          buffer[i] = (byte) ((values >> offset) & 0xff); 
      }
     return buffer;  
}

 public static long BytesToLong(byte[] buffer) {   
    long  values = 0;   
    for (int i = 0; i < 8; i++) {    
        values <<= 8; values|= (buffer[i] & 0xff);   
    }   
    return values;  
 } 


--------------------------转


public static byte[] getBytes(short data)

    {


         byte [] bytes =  new  byte [2];


        bytes[0] = ( byte ) (data & 0xff);


        bytes[1] = ( byte ) ((data & 0xff00) >> 8);


         return  bytes;


    }




     public  static  byte [] getBytes( char  data)


    {


         byte [] bytes =  new  byte [2];


        bytes[0] = ( byte ) (data);


        bytes[1] = ( byte ) (data >> 8);


         return  bytes;


    }




     public  static  byte [] getBytes( int  data)


    {


         byte [] bytes =  new  byte [4];


        bytes[0] = ( byte ) (data & 0xff);


        bytes[1] = ( byte ) ((data & 0xff00) >> 8);


        bytes[2] = ( byte ) ((data & 0xff0000) >> 16);


        bytes[3] = ( byte ) ((data & 0xff000000) >> 24);


         return  bytes;


    }




     public  static  byte [] getBytes( long  data)


    {


         byte [] bytes =  new  byte [8];


        bytes[0] = ( byte ) (data & 0xff);


        bytes[1] = ( byte ) ((data >> 8) & 0xff);


        bytes[2] = ( byte ) ((data >> 16) & 0xff);


        bytes[3] = ( byte ) ((data >> 24) & 0xff);


        bytes[4] = ( byte ) ((data >> 32) & 0xff);


        bytes[5] = ( byte ) ((data >> 40) & 0xff);


        bytes[6] = ( byte ) ((data >> 48) & 0xff);


        bytes[7] = ( byte ) ((data >> 56) & 0xff);


         return  bytes;


    }




     public  static  byte [] getBytes( float  data)


    {


         int  intBits = Float.floatToIntBits(data);


         return  getBytes(intBits);


    }




     public  static  byte [] getBytes( double  data)


    {


         long  intBits = Double.doubleToLongBits(data);


         return  getBytes(intBits);


    }




     public  static  byte [] getBytes(String data, String charsetName)


    {


        Charset charset = Charset.forName(charsetName);


         return  data.getBytes(charset);


    }




     public  static  byte [] getBytes(String data)


    {


         return  getBytes(data,  "GBK" );


    }




    


     public  static  short  getShort( byte [] bytes)


    {


         return  ( short ) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)));


    }




     public  static  char  getChar( byte [] bytes)


    {


         return  ( char ) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)));


    }




     public  static  int  getInt( byte [] bytes)


    {


         return  (0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)) | (0xff0000 & (bytes[2] << 16)) | (0xff000000 & (bytes[3] << 24));


    }


   


     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));


    }




     public  static  float  getFloat( byte [] bytes)


    {


         return  Float.intBitsToFloat(getInt(bytes));


    }




     public  static  double  getDouble( byte [] bytes)


    {


         long  l = getLong(bytes);


        System. out .println(l);


         return  Double.longBitsToDouble(l);


    }




     public  static  String getString( byte [] bytes, String charsetName)


    {


         return  new  String(bytes, Charset.forName(charsetName));


    }




     public  static  String getString( byte [] bytes)


    {


         return  getString(bytes,  "GBK" );


    }



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/drupe/article/details/41729873

智能推荐

Linux ALSA音频驱动之一:框架概述_alsa驱动-程序员宅基地

ALSA表示高级Linux声音体系结构(Advanced Linux Sound Architecture)。它由一系列内核驱动,应用程序编译接口(API)以及支持Linux下声音的实用程序组成。_alsa驱动

SPECIAL PAIRS(Sos_dp)-程序员宅基地

这个是一道救命dp入门题参考dalao的>>face<<friendly codes#include <bits/stdc++.h>using namespace std;#define _rep(i, a, b) for (int i = (a); i <= (b); ++i)#define _rev(i, a, b) for (int..._special pairs

手机App做aso优化过程中的主意事项_liuliangpuzi的博客-程序员宅基地

在为手机APP做ASO优化过程中,可能会遇到各式各样的问题,有的问题在网上搜索找不到解决办法,同行群里询问也容易各执一词,得不到准确的回答。此次针对苹果应用市场小马识途通过多年的ASO优化经验及优化实践中遇到的问题,并根据问题的重合度及关注度,整理了一些精品问题进行分享问题一:如何挑选做ASO优化的关键词,词不带量,竞争太大稳定不住,怎么办?回答:挑选关键词和SEO优化的思路和原则基本一致。1、在选词阶段搭建一个词库选词阶段,将自己产品所有的核心词(根据自己的用户属性,产品功能,都会有只属于自己的_app做aso

Qt 关于弹出对话框,实现居中显示!_qframe 居中-程序员宅基地

本人实现的是 QFrame 居中!因为要实现QFrame 弹出居中显示。。在QFrame->show之前实现move,但是这样是取不到QFrame真实的大小!在QFrame->show之后实现move,这时move就会出现闪屏的现象发生。在 xiachm大虾的提示下,用resizeEvent(QResizeEvent * ) 来实现QFrame居中显示。。void QM_qframe 居中

SpringBoot如何使用Swagger2生成接口文档-程序员宅基地

Swagger是什么?Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful风格的Web服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger的作用主要有以下两点:接口的文档在线自动生成。功能测试。在SpringBoot中使用Swagger2生成接口文档1....

使用Mac初始化一个react项目(完整)_mac 系统初始化react是否如何可以使用不是root权限-程序员宅基地

1、安装JavaScript包的管理器(使⽤npm指令管理项⽬所依赖的JavaScript库)(1)由于npm库最先是Node.js项目使⽤的包管理⼯工具,后来流行成为所有的前端JavaScript库的 包管理理工具。所以下载安装npm,直接进入到Node.js官网上下载安装。在这里插入代码片https://nodejs.org/en/操作:下载安装。测试:在这里插入代码片npm -v ..._mac 系统初始化react是否如何可以使用不是root权限

随便推点

Android7.1添加开机启动服务程序关于Selinux权限问题说明_u:object_r:wqtest_exec:s0 shell_放大的EZ的博客-程序员宅基地

当需要添加一个binder服务xxx程序,并且设置成开机自启动时,需要按照如下步骤操作:第一步,我们可以在init.rc中添加了如下代码行:service xxxx /system/bin/xxxxclass mainuser rootgroup rootoneshotseclabel u:r:xxxx:s0 #这句是为加selinux权限添加的,android5.1以后不加则无法启动该服务编译img后烧到机器,发现服务xxx无法启动,kernel log中有如下提示(例如这里新加的_u:object_r:wqtest_exec:s0 shell

vscode 里打开ipynb文件.md_vscode怎么导出.ipynb项目-程序员宅基地

网上搜了好多方法,好麻烦,自己看完了整理一下:最好的教程???#0.在虚拟环境下安装jupyter notebookconda install jupyter notebook1.将ipynb转为.py文件每次vscode打开的时候都会问你一下行,import一下他就会给你建一个untitled.py文件2.打开与jupyter notebook交互窗口操作:ctrl+shif..._vscode怎么导出.ipynb项目

Javascript语言的10个古怪之处-程序员宅基地

原文参见:Javascript语言的10个古怪之处数据类型和定义1. Null是一个对象JavaScript的Null类型有个唯一值null,定义为没有意义的值。确实如此,Null是“没有意义的值”。下面的代码用于对于此说明进行简单验证:alert(typeof null); //alerts 'object'typeof值显示null是"object",但并不因此而应认为null就是一个对象实例。(JavaScript中的值都是对象实例:比如数字都是Number对象,对象都是Ob.

CSS相关小结_margin:0 10px 0 5px;上下左右-程序员宅基地

CSS相关总结1.CSS概念CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义HTML内容在浏览器内的显示样式,比如文字大小、颜色、字体加粗等。2.语法注释:/注释内容/选择器规则3.在html中如何应用css属性内嵌:在元素中添加style属性,style属性值为css样式规则内嵌:将样式添加到head标签中的st..._margin:0 10px 0 5px;上下左右

千兆网卡芯片对比:后起之秀和江湖前辈,谁更优秀?_网卡 芯片不同 区别_深圳联瑞电子LRLINK的博客-程序员宅基地

在千兆网卡中,Intel的I350以太网控制器(以下简称芯片)发行了十年,以性能稳定,兼容性在全球以太网卡市场中占据着强大的市场地位,可以说是千兆网卡以太网控制器中的“杠把子”,妥妥的千兆网卡中的江湖老前辈。既然是江湖老前辈,受全球网卡客户的喜爱程度自然不言而喻,所以不出所料伴随全球缺芯浪潮越演越烈,Intel的I350芯片出现了严重的断货局面。据相关迹象显示,这个缺货局面有可能到2022年的下半年才有所缓解。Intel I350芯片缺货怎么办,难道大家都不用了吗?其实不然,Intel I350虽然是千_网卡 芯片不同 区别

Java 后台实现上传图片的接收并保存_java servlet 接收 图片 并存储 multiparthttpservletrequest-程序员宅基地

1.javapublic static File uploadFilesSpecifyPath(HttpServletRequest request, String fileDir, String Filedata) throws Exception { MultipartFile mf = null; File mff = null; if (!(request instanceof_java servlet 接收 图片 并存储 multiparthttpservletrequest