java byte数组转long型

转载地址
java下没有无符号的整形(unsigned char,unsigned short,unsigned int,unsigned long), 字节流通信时往往需要把byte[]转成对应的整形,符号位处理不当会导致数据解析失败.
不同整形对应的字节长度不一, 可以统一为long来处理.
byte占一个字节,如果不做处理直接付给int或long类型的变量,当高位为1时会导致得到不正确的值(负数), 如果与0xff(或者0xffL)做位与就可以保证得到byte本身的值.

public class Main {public static void main(String[] args) {byte[] bs1 = new byte[1];bs1[0] = (byte) 0xf2;byte[] bs2 = new byte[2];bs2[0] = (byte) 0xa2;bs2[1] = 0x32;byte[] bs3 = new byte[4];bs3[0] = (byte) 0xe2;bs3[1] = 0x12;bs3[2] = 0x22;bs3[3] = 0x52;byte[] bs4 = new byte[8];bs4[0] = (byte) 0x82;bs4[1] = 0x12;bs4[2] = 0x22;bs4[3] = 0x32;bs4[4] = 0x42;bs4[5] = 0x52;bs4[6] = 0x62;bs4[7] = 0x72;try {System.out.printf("value1: %016x\n", bytes2long(bs1));System.out.printf("value2: %016x\n", bytes2long(bs2));System.out.printf("value3: %016x\n", bytes2long(bs3));System.out.printf("value4: %016x\n", bytes2long(bs4));} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/* (non-Java-doc)* @see java.lang.Object#Object()*/public Main() {super();}static long bytes2long(byte[] bs)  throws Exception {int bytes = bs.length;if(bytes > 1) {if((bytes % 2) != 0 || bytes > 8) {throw new Exception("not support");}}switch(bytes) {case 0:return 0;case 1:return (long)((bs[0] & 0xff));case 2:return (long)((bs[0] & 0xff) <<8 | (bs[1] & 0xff));case 4:return (long)((bs[0] & 0xffL) <<24 | (bs[1] & 0xffL) << 16 | (bs[2] & 0xffL) <<8 | (bs[3] & 0xffL));case 8:return (long)((bs[0] & 0xffL) <<56 | (bs[1] & 0xffL) << 48 | (bs[2] & 0xffL) <<40 | (bs[3] & 0xffL)<<32 | (bs[4] & 0xffL) <<24 | (bs[5] & 0xffL) << 16 | (bs[6] & 0xffL) <<8 | (bs[7] & 0xffL));default:throw new Exception("not support");     }//return 0;}}

java byte数组转long型相关推荐

  1. java byte数组与String互转

    java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String.g ...

  2. java byte数组与int之间相互转换

    位运算 位运算 说明 使用 &按位与 对应位都是1,结果为1,否则为0 a&b |按位或 对应位都是0,结果为0,否则为1 a|b ^按位非 对应位值相同,结果为0,否则为1 a^b ...

  3. java byte数组转int数组_Java任意长度byte数组转换为int数组的方法

    前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...

  4. Java byte数组与十六进制字符串互转

    Java byte数组与十六进制字符串互转 博客分类: Java Javajava 十六进制java hex Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64 ...

  5. java 字节 操作_实例解析Java byte数组操纵方式代码

    字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位. 坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在 ...

  6. java byte数组string_byte数组和String之间的转化

    JAVA里面关于byte数组和String之间的转换问题 把byte转化成string,必须经过编码. 例如下面一个例子: import java.io.UnsupportedEncodingExce ...

  7. java byte数组 初始化_Java根据byte数组,生成文件

    根据byte数组,生成文件 自己写的小案例,找个地方记录一下 package com.seesun2012.utils; import java.io.BufferedOutputStream; im ...

  8. java byte数组操作_Byte数组操作方法集(Java.Net)

    在velocity优化时由于要将String转化为byte,所以就会涉及到一些针对byte数组的操作需要,如在一个数组中查找一个小数组.数组替换.数组扩展等操作,下面这个类就提供了这样一组方法,而且性 ...

  9. java byte数组操作_Java byte数组操纵方式代码实例解析

    字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位. 坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在 ...

  10. java byte数组转long_Java中byte、byte数组与int、long的转换详解

    一.Java 中 byte 和 int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (byte) ...

最新文章

  1. otsu算法原理及C++代码实现-寻找灰度图片中最佳阈值
  2. 某集团公司信息化项目经验总结
  3. 如果计算机语言是中国人发明的 | 每日趣闻
  4. 生产环境WEB服务管理脚本之日志检测脚本
  5. 小程序订单点击不同页面_小程序跳转页面参数丢失
  6. 【生活】1024,快乐
  7. Java编译型语言还是解释型语言
  8. iOS绘图UIBezierPath 和 Core Graphics框架
  9. 汽车行业要变天?数据告诉你,为什么说合资车企正在走向末路
  10. docker 监控容器的cpu、内存、网络、io情况
  11. 电脑上有哪些特别好用的小工具?盘点4个PC工具,个个都精品
  12. ibm邮件怎么撤回_请问LotusNotes具备发出邮件后撤回 – 手机爱问
  13. Android蓝牙手柄开发
  14. [python + pillow] 自制壁纸不完全教程
  15. Android储存 文件储存
  16. Python生成动态二维码,运用神库:qrcode
  17. jQuery入门与实战
  18. python :turtle画笔设置函数
  19. 主流加密通信应用Signal在中国“失联”
  20. DTU是什么?浅解DTU

热门文章

  1. 保研之路——上交大电子系直博
  2. Docker安装aria2+ariang
  3. Java计算加权平均成绩
  4. 如何把Excel中表格复制粘贴到PPT中,并更改表格边框颜色
  5. CTP程序化交易入门系列之五:现手、增仓、开平、对手盘计算
  6. 顺流交易会计处理的通俗理解
  7. 推荐几款好用的压缩软件
  8. 如何使用SPSS判断数据的正态分布
  9. 超详细!一份给零基础新手的插画设计自学指南
  10. 英语学术论文简短语句摘抄