import java.nio.ByteOrder;
import java.nio.charset.Charset;
/**
* 数字转字节数组工具类
*/
public class BitConverter {
/**
* 以字节数组的形式返回指定的布尔值
* @param data 一个布尔值
* @return 长度为 1 的字节数组
*/
public static byte[] getBytes(boolean data) {
byte[] bytes = new byte[1];
bytes[0] = (byte) (data ? 1 : 0);
return bytes;
}
/**
* 以字节数组的形式返回指定的 16 位有符号整数值
* @param data 要转换的数字
* @return 长度为 2 的字节数组
*/
public static byte[] getBytes(short data) {
byte[] bytes = new byte[2];
if (isLittleEndian()) {
bytes[0] = (byte) (data & 0xff);
bytes[1] = (byte) ((data & 0xff00) >> 8);
} else {
bytes[1] = (byte) (data & 0xff);
bytes[0] = (byte) ((data & 0xff00) >> 8);
}
return bytes;
}
/**
* 以字节数组的形式返回指定的 Unicode 字符值
* @param data 要转换的字符
* @return 长度为 2 的字节数组
*/
public static byte[] getBytes(char data) {
byte[] bytes = new byte[2];
if (isLittleEndian()) {
bytes[0] = (byte) (data);
bytes[1] = (byte) (data >> 8);
} else {
bytes[1] = (byte) (data);
bytes[0] = (byte) (data >> 8);
}
return bytes;
}
/**
* 以字节数组的形式返回指定的 32 位有符号整数值
* @param data 要转换的数字
* @return 长度为 4 的字节数组
*/
public static byte[] getBytes(int data) {
byte[] bytes = new byte[4];
if (isLittleEndian()) {
bytes[0] = (byte) (data & 0xff);
bytes[1] = (byte) ((data & 0xff00) >> 8);
bytes[2] = (byte) ((data & 0xff0000) >> 16);
bytes[3] = (byte) ((data & 0xff000000) >> 24);
} else {
bytes[3] = (byte) (data & 0xff);
bytes[2] = (byte) ((data & 0xff00) >> 8);
bytes[1] = (byte) ((data & 0xff0000) >> 16);
bytes[0] = (byte) ((data & 0xff000000) >> 24);
}
return bytes;
}
/**
* 以字节数组的形式返回指定的 64 位有符号整数值
* @param data 要转换的数字
* @return 长度为 8 的字节数组
*/
public