java中int与byte相互转换

Posted 大朱123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中int与byte相互转换相关的知识,希望对你有一定的参考价值。

1:int和byte的关系

  在java中,int整形变量是32位的,而byte是8位的,他们之间的转换有一定的策略和讲究。

1.1:int 到byte

首先我们实现int和byte之间的转换,思路如下:

  1. 创建一个byte数组,长度为4。byte[0]是最高位,byte[1]是次高位,byte[2]是次次高位,byte[3]是最低位,
  2. 在将int数据右移24位,然后与0xFF相与即可得到byte[0]。
  3. 在将int数据右移16位,然后与0xFF相与即可得到byte[1]。
  4. 在将int数据右移8位,然后与0xFF相与即可得到byte[2]。
  5. 在将int数据右移0位,然后与0xFF相与即可得到byte[3]。
  6. 输出byte[]数组即可。

1.2:byte 到int

首先我们实现byte和int之间的转换,思路如下:

  1. 输入一个byte数组,长度为4。byte[0]是最高位,byte[1]是次高位,byte[2]是次次高位,byte[3]是最低位,
  2. 创建一个int型变量sum,作为byte到int的结果。
  3. 用一个for(int i=0;i<4;i++)的循环。每次将(3-i)*8的值,作为该byte的权重。
  4. sum = sum + byte[i]<<(3-i)*8。重复3-4即可。
  5. return sum即可。

2:代码实现

  /**
     * int到byte[] 由高位到低位
     * @param i 需要转换为byte数组的整行值。
     * @return byte数组
     */
    public static byte[] intToByteArray(int i) {
        byte[] result = new byte[4];
        result[0] = (byte)((i >> 24) & 0xFF);
        result[1] = (byte)((i >> 16) & 0xFF);
        result[2] = (byte)((i >> 8) & 0xFF);
        result[3] = (byte)(i & 0xFF);
        return result;
    }

    /**
     * byte[]转int
     * @param bytes 需要转换成int的数组
     * @return int值
     */
    public static int byteArrayToInt(byte[] bytes) {
        int value=0;
        for(int i = 0; i < 4; i++) {
            int shift= (3-i) * 8;
            value +=(bytes[i] & 0xFF) << shift;
        }
        return value;
    }

 

以上是关于java中int与byte相互转换的主要内容,如果未能解决你的问题,请参考以下文章

go笔记 - 字符串、数字、byte相互转换

Java类型相互转换byte[]类型,blob类型

Scala 库将数字(Int、Long、Double)与 Array[Byte] 相互转换

大数据Java基础int型与byte型数组的转换

Java 中byte 与 char 的相互转换 Java基础 但是很重要

java中byte转换int时为何与0xff进行与运算