码迷,mamicode.com
首页 > 编程语言 > 详细

java中int与byte相互转换

时间:2020-03-24 13:06:34      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:style   创建   代码实现   return   param   stat   shift   new   val   

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相互转换

标签:style   创建   代码实现   return   param   stat   shift   new   val   

原文地址:https://www.cnblogs.com/dazhu123/p/12558035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!