zoukankan      html  css  js  c++  java
  • java int转byte和long转byte

    在网络编程中,出于节约带宽或者编码的需要,通常需要以原生方式处理long和int,而不是转换为string。

    public class ByteOrderUtils {

    public static byte[] int2byte(int res) {
    byte[] targets = new byte[4];

    targets[3] = (byte) (res & 0xff);// 最低位
    targets[2] = (byte) ((res >> 8) & 0xff);// 次低位
    targets[1] = (byte) ((res >> 16) & 0xff);// 次高位
    targets[0] = (byte) (res >>> 24);// 最高位,无符号右移。
    return targets;
    }

    public static int byteArrayToInt(byte[] b){
    byte[] a = new byte[4];
    int i = a.length - 1,j = b.length - 1;
    for (; i >= 0 ; i--,j--) {//从b的尾部(即int值的低位)开始copy数据
    if(j >= 0)
    a[i] = b[j];
    else
    a[i] = 0;//如果b.length不足4,则将高位补0
    }
    int v0 = (a[0] & 0xff) << 24;//&0xff将byte值无差异转成int,避免Java自动类型提升后,会保留高位的符号位
    int v1 = (a[1] & 0xff) << 16;
    int v2 = (a[2] & 0xff) << 8;
    int v3 = (a[3] & 0xff) ;
    return v0 + v1 + v2 + v3;
    }

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

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

    }

  • 相关阅读:
    JavaScript中的原型和继承
    Classical Inheritance in JavaScript
    jquery.cookie 使用方法
    Backbone.js 使用 Collection
    Backbone.js 中使用 Model
    Backbone.js 使用模板
    Java并发编程:volatile关键字解析zz
    eclipse 搭建Swt 环境
    Adams输出宏代码
    根据圆上三点求圆心及半径
  • 原文地址:https://www.cnblogs.com/zhjh256/p/5937824.html
Copyright © 2011-2022 走看看