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;
    }
  • 相关阅读:
    Docker的安装和scrapy-splash的安装
    scrapyd打包到服务器运行
    一些python的简单有用方法
    NFS学习
    apache配置https加密传输
    httpd基于域名不同的虚拟主机配置
    Openssl创建私有CA
    NODEJS版本控制和切换
    HyperV使用Centos系统安装FTP服务
    装Anaconda报错This Python interpreter is in a conda environment, but the environment has not been activated. Libraries may fail to load. To activate this environment please see http://conda.io/activation
  • 原文地址:https://www.cnblogs.com/chenyixun/p/14052420.html
Copyright © 2011-2022 走看看