zoukankan      html  css  js  c++  java
  • Java中数值类型与字节数组之间的转换大法(精简)

    /**
    * 整型转字节数组
    *
    * @param data 待转换数值
    * @param bytes 转换后的数组
    * @param beginIndex 数组起始下标
    * @return
    */
    public static int int2Bytes(int data, byte[] bytes, int beginIndex) {
    if (null == bytes || beginIndex < 0 || bytes.length < beginIndex + 4) {
    return -1;
    }

    try {
    bytes[beginIndex++] = (byte) (data & 0xff);
    bytes[beginIndex++] = (byte) (data >> 8 & 0xff);
    bytes[beginIndex++] = (byte) (data >> 16 & 0xff);
    bytes[beginIndex++] = (byte) (data >> 24 & 0xff);
    } catch (RuntimeException e) {
    throw e;
    }

    return beginIndex;
    }

    /**
    * 长整型转字节数组
    *
    * @param data 待转换数值
    * @param bytes 转换后的数组
    * @param beginIndex 数组起始下标
    * @return
    */
    public static int long2Bytes(long data, byte[] bytes, int beginIndex) {
    if (null == bytes || beginIndex < 0 || bytes.length < beginIndex + 8) {
    return -1;
    }

    try {
    bytes[beginIndex++] = (byte) (data & 0xff);
    bytes[beginIndex++] = (byte) (data >> 8 & 0xff);
    bytes[beginIndex++] = (byte) (data >> 16 & 0xff);
    bytes[beginIndex++] = (byte) (data >> 24 & 0xff);
    bytes[beginIndex++] = (byte) (data >> 32 & 0xff);
    bytes[beginIndex++] = (byte) (data >> 40 & 0xff);
    bytes[beginIndex++] = (byte) (data >> 48 & 0xff);
    bytes[beginIndex++] = (byte) (data >> 56 & 0xff);
    } catch (RuntimeException e) {
    throw e;
    }

    return beginIndex;
    }

    /**
    * 字节数组转整型
    *
    * @param bytes 待转换数组
    * @param beginIndex 数组起始下标
    * @return
    */
    public static int bytes2Int(byte[] bytes, int beginIndex) {
    if (null == bytes || beginIndex < 0 || bytes.length < beginIndex + 4) {
    return -1;
    }

    int result = 0;
    try {
    int tmpVal = 0;
    for (int i = 0; i < 4; i++) {
    tmpVal = (bytes[i + beginIndex] << (i * 8));
    switch (i) {
    case 0:
    tmpVal = tmpVal & 0x000000FF;
    break;
    case 1:
    tmpVal = tmpVal & 0x0000FF00;
    break;
    case 2:
    tmpVal = tmpVal & 0x00FF0000;
    break;
    case 3:
    tmpVal = tmpVal & 0xFF000000;
    break;
    }

    result |= tmpVal;
    }
    } catch (RuntimeException e) {
    throw e;
    }

    return result;
    }

    /**
    * 字节数组转长整型
    *
    * @param bytes 待转换数组
    * @param beginIndex 数组起始下标
    * @return
    */
    public static long bytes2Long(byte[] bytes, int beginIndex) {
    if (null == bytes || beginIndex < 0 || bytes.length < beginIndex + 8) {
    return -1L;
    }

    long result = 0L;
    try {
    int shift = 0;
    for (int i = 0; i < 8; i++) {
    shift = i << 3;
    result |= ((long) 0xff << shift) & ((long) bytes[i + beginIndex] << shift);
    }
    } catch (RuntimeException e) {
    throw e;
    }

    return result;
    }
  • 相关阅读:
    jenkins持续集成
    对pm2对研究
    模板⽅法模式
    python configparser模块
    Python正则表达式
    Python读写文件之换行符
    Python字符串
    Python字典
    Python列表
    爬虫 urllib,requests,lxml,bs4 小结
  • 原文地址:https://www.cnblogs.com/chenyixun/p/14052420.html
Copyright © 2011-2022 走看看