实现字节数组和任何基本类型和引用类型执行的相互转换 提示:使用ByteArrayInutStream和ByteArrayOutputStream。
时间: 2024-11-13 09:25:54 浏览: 8
实现字节数组与其他基础类型和引用类型的相互转换通常涉及到IO流操作,特别是通过`java.io.ByteArrayInputStream`和`java.io.ByteArrayOutputStream`。这两个类分别用于将字节数组转换成输入流和从输入流转换回字节数组。
1. **基本类型到字节数组**:
- 对于基础类型(如int、char等),可以先将它们包装成对应的`Byte`或`CharArray`数组,然后使用序列化机制(如`ObjectOutputStream`)将其转换为字节数组。
```java
byte[] byteArray = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(byteArray);
oos.writeByte(myInt); // 或者序列化整个数组
oos.close();
```
2. **字节数组到基本类型**:
- 可以创建一个新的`ByteArrayInputStream`,读取字节数组并逐个反序列化(例如,使用`DataInputStream`读取`Byte`)。
```java
ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
DataInputStream dis = new DataInputStream(bais);
int myInt = dis.readByte(); // 反序列化回整数
```
3. **引用类型到字节数组**:
- 对于引用类型(如对象),需要先将其序列化,最常见的是使用`ObjectOutputStream`。序列化后的结果会是一个包含对象信息的字节数组。
```java
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(myObject);
oos.close();
byte[] byteArray = baos.toByteArray();
```
4. **字节数组到引用类型**:
- 创建一个新的`ByteArrayInputStream`后,使用`ObjectInputStream`进行反序列化,得到原始的对象实例。
```java
ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
ObjectInputStream ois = new ObjectInputStream(bais);
MyObject myObject = (MyObject)ois.readObject();
ois.close();
```
阅读全文