java 大小端转换
时间: 2023-09-02 17:08:11 浏览: 44
在Java中,可以使用以下方法进行大小端转换:
1. 使用ByteBuffer类:
```java
import java.nio.ByteBuffer;
// 将int类型的值从大端转换为小端
public static int bigEndianToInt(byte[] bytes) {
ByteBuffer buffer = ByteBuffer.wrap(bytes);
buffer.order(ByteOrder.BIG_ENDIAN);
return buffer.getInt();
}
// 将int类型的值从小端转换为大端
public static byte[] intToBigEndian(int value) {
ByteBuffer buffer = ByteBuffer.allocate(4);
buffer.order(ByteOrder.BIG_ENDIAN);
buffer.putInt(value);
return buffer.array();
}
// 将int类型的值从小端转换为大端
public static int littleEndianToInt(byte[] bytes) {
ByteBuffer buffer = ByteBuffer.wrap(bytes);
buffer.order(ByteOrder.LITTLE_ENDIAN);
return buffer.getInt();
}
// 将int类型的值从大端转换为小端
public static byte[] intToLittleEndian(int value) {
ByteBuffer buffer = ByteBuffer.allocate(4);
buffer.order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(value);
return buffer.array();
}
```
2. 手动交换字节顺序:
```java
// 将int类型的值从大端转换为小端
public static int bigEndianToInt(byte[] bytes) {
int value = 0;
for (int i = 0; i < 4; i++) {
value = (value << 8) | (bytes[i] & 0xFF);
}
return value;
}
// 将int类型的值从小端转换为大端
public static byte[] intToBigEndian(int value) {
byte[] bytes = new byte[4];
for (int i = 0; i < 4; i++) {
bytes[3 - i] = (byte) (value >> (i * 8));
}
return bytes;
}
// 将int类型的值从小端转换为大端
public static int littleEndianToInt(byte[] bytes) {
int value = 0;
for (int i = 0; i < 4; i++) {
value = (value << 8) | (bytes[3 - i] & 0xFF);
}
return value;
}
// 将int类型的值从大端转换为小端
public static byte[] intToLittleEndian(int value) {
byte[] bytes = new byte[4];
for (int i = 0; i < 4; i++) {
bytes[i] = (byte) (value >> (i * 8));
}
return bytes;
}
```
以上代码示例中,`bigEndianToInt` 和 `intToBigEndian` 方法用于大端和小端之间的转换,`littleEndianToInt` 和 `intToLittleEndian` 方法用于小端和大端之间的转换。你可以根据需要选择其中一种方法进行使用。