如何将int与byte[]之间转换;
int类型在内存中占4个字节,采用补码方式存储,而一个byte占一个字节。下面有两种方法进行转换:
package cn.fh.vertxboot.utils;
/**
* @description: int与Byte数组转换
**/
public class ByteUtils {
/*
int转byte[]
*将int数值转换为占四个字节的byte数组,int低位在前,高位在后
* */
public static byte[] intToBytes(int value){
byte[] bytes = new byte[4];
for (int i = 0; i < bytes.length; i++){
int n = bytes.length - 1 -i;
bytes[4 - i - 1] = (byte)((value>>8*n));
}
return bytes;
}
/*
*byte[]转int
* 适用于低位在前高位在后
* */
public static int byteToInt(byte[] src, int offset){
int value;
value = (int) ((src[offset] & 0xFF)
| ((src[offset+1] & 0xFF)<<8)
| ((src[offset+2] & 0xFF)<<16)
| ((src[offset+3] & 0xFF)<<24));
return value;
}
/*
*int转byte[]
*将int数值转换为占四个字节的byte数组,int高位在前低位在后
* */
public static byte[] intToBytes2(int value) {
byte[] bytes = new byte[4];
for (int i = 0; i < bytes.length; i++){
int n = bytes.length - 1 -i;
bytes[i] = (byte)((value>>8*n));
}
return bytes;
}
/**
byte[]转int,高位在前低位在后
*/
public static int byteToInt2(byte[] src, int offset) {
int value;
value = (int) ( ((src[offset] & 0xFF)<<24)
|((src[offset+1] & 0xFF)<<16)
|((src[offset+2] & 0xFF)<<8)
|(src[offset+3] & 0xFF));
return value;
}
public static void main(String[] args) {
System.out.println("int转byte[]低位在钱高位在后");
byte[] bytes = intToBytes(1999);
for (int n = 0; n < bytes.length; n++){
System.out.println(bytes[n]);
}
System.out.println("byte[]转int地位在前高位在后");
int value = byteToInt(bytes,0);
System.out.println(value);
System.out.println("----------------------------");
System.out.println("byte[]转int地位在前高位在后");
byte[] bytes2 = intToBytes2(1999);
for (int n = 0; n < bytes2.length; n++){
System.out.println(bytes[n]);
}
System.out.println("byte[]转int地位在前高位在后");
int value2 = byteToInt2(bytes2,0);
System.out.println(value2);
}
}
结果如下:
](/https://i-blog.csdnimg.cn/blog_migrate/77bc8b86806750f07a5b9ada04f77a10.png#pic_center)
本文详细介绍了一种在Java中实现int类型与byte数组互相转换的方法。提供了两种不同的转换方式,一种是int低位在前,另一种是高位在前。通过具体的代码示例,展示了如何使用这些方法进行数据类型的转换。

157

被折叠的 条评论
为什么被折叠?



