请看下面的讲解。
Java基本类型与byte数组之间相互转换方法
在Java中,有时候我们需要将基本类型(如int、float等)转换成byte数组,或者将byte数组转换成基本类型。本文将提供两种方法来实现这种相互转换。
1. 使用Java的ByteBuffer类
Java的ByteBuffer类可以很方便地完成基本类型与byte数组的转换。
将基本类型转换成byte数组
int num = 123;
byte[] bytes = ByteBuffer.allocate(4).putInt(num).array();
上面的代码中,我们将一个int类型的变量num转换成了大小为4个字节的byte数组bytes。首先,我们使用allocate方法创建了一个4字节的ByteBuffer对象,然后通过putInt方法将num写入ByteBuffer对象中,最后通过array方法获取ByteBuffer对象的字节数组。
将byte数组转换成基本类型
byte[] bytes = {0x00, 0x00, 0x00, 0x7B};
int num = ByteBuffer.wrap(bytes).getInt();
上面的代码中,我们将一个长度为4的byte数组bytes转换成了一个int类型的变量num。首先,我们使用wrap方法将byte数组bytes包装成一个ByteBuffer对象,然后通过调用getInt方法获取ByteBuffer对象中的整型数据。
需要注意的是,在上面的代码中我们使用了16进制数表示字节数据。0x00表示一个字节都没有,0x7B表示十进制数123。
2. 使用Java的DataInputStream和DataOutputStream类
Java的DataInputStream和DataOutputStream类也可以完成基本类型与byte数组的互相转换。
将基本类型转换成byte数组
int num = 123;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
dos.writeInt(num);
byte[] bytes = bos.toByteArray();
bos.close();
dos.close();
上面的代码中,我们将一个int类型的变量num转换成了大小为4个字节的byte数组bytes。首先,我们创建了一个ByteArrayOutputStream对象bos,再创建了一个DataOutputStream对象dos来对bos进行操作。通过调用DataOutputStream对象的writeInt方法将num写入bos中。最后通过调用bos的toByteArray方法获取字节数组。
需要注意的是,在使用DataOutputStream对象时,需要将其绑定在一个ByteArrayOutputStream对象上。
将byte数组转换成基本类型
byte[] bytes = {0x00, 0x00, 0x00, 0x7B};
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
DataInputStream dis = new DataInputStream(bis);
int num = dis.readInt();
bis.close();
dis.close();
上面的代码中,我们将一个长度为4的byte数组bytes转换成了一个int类型的变量num。首先,我们创建了一个ByteArrayInputStream对象bis,再创建了一个DataInputStream对象dis来对bis进行操作。通过调用DataInputStream对象的readInt方法从bis中读取num。最后需要关闭ByteArrayInputStream和DataInputStream对象。
需要注意的是,在使用DataInputStream对象时,需要将其绑定在一个ByteArrayInputStream对象上。
3. 示例说明
例如,我们需要将int类型的变量123转换成byte数组,我们可以使用如下代码:
int num = 123;
byte[] bytes = ByteBuffer.allocate(4).putInt(num).array();
System.out.println(Arrays.toString(bytes));
输出结果为:
[0, 0, 0, 123]
再例如,我们需要将长度为4的byte数组[0x00, 0x00, 0x00, 0x7B]转换成int类型的变量,我们可以使用如下代码:
byte[] bytes = {0x00, 0x00, 0x00, 0x7B};
int num = ByteBuffer.wrap(bytes).getInt();
System.out.println(num);
输出结果为:
123
结论
以上两种方法都可以完成基本类型与byte数组的相互转换。如果有其他的特殊需求,还可以使用byte数组的toString方法来将byte数组转换成十六进制字符串等等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java基本类型与byte数组之间相互转换方法 - Python技术站