1:int和byte的关系
在java中,int整形变量是32位的,而byte是8位的,他们之间的转换有一定的策略和讲究。
1.1:int 到byte
首先我们实现int和byte之间的转换,思路如下:
- 创建一个byte数组,长度为4。byte[0]是最高位,byte[1]是次高位,byte[2]是次次高位,byte[3]是最低位,
- 在将int数据右移24位,然后与0xFF相与即可得到byte[0]。
- 在将int数据右移16位,然后与0xFF相与即可得到byte[1]。
- 在将int数据右移8位,然后与0xFF相与即可得到byte[2]。
- 在将int数据右移0位,然后与0xFF相与即可得到byte[3]。
- 输出byte[]数组即可。
1.2:byte 到int
首先我们实现byte和int之间的转换,思路如下:
- 输入一个byte数组,长度为4。byte[0]是最高位,byte[1]是次高位,byte[2]是次次高位,byte[3]是最低位,
- 创建一个int型变量sum,作为byte到int的结果。
- 用一个for(int i=0;i<4;i++)的循环。每次将(3-i)*8的值,作为该byte的权重。
- sum = sum + byte[i]<<(3-i)*8。重复3-4即可。
- 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; }
原文地址:https://www.cnblogs.com/dazhu123/p/12558035.html
时间: 2024-11-09 16:31:27