package com.zjf.mapper;
import java.io.*;
import java.nio.ByteOrder;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
/**
* 数字转字节数组工具类
*/
public class BitConverter {
public static byte[] objectToByte(Object obj){
byte[] bytes;
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(obj);
bytes = bo.toByteArray();
bo.close();
oo.close();
}
catch(Exception ae) {
try {
throw ae;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return(bytes);
}
/**
* 以字节数组的形式返回指定的布尔值
*
* @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 static byte[] getBytes(long data) {
byte[] bytes = new byte[8];
if (isLittleEndian()) {
bytes[0] = (byte) (data & 0xff);
bytes[1] = (byte) ((data >> 8) & 0xff);
bytes[2] = (byte) ((data >> 16) & 0xff);
bytes[3] = (byte) ((data >> 24) & 0xff);
bytes[4] = (byte) ((data >> 32) & 0xff);
bytes[5] = (byte) ((data >> 40) & 0xff);
bytes[6] = (byte) ((data >> 48) & 0xff);
bytes[7] = (byte) ((data >> 56) & 0xff);
} else {
bytes[7] = (byte) (data & 0xff);
bytes[6] = (byte) ((data >> 8) & 0xff);
bytes[5] = (byte) ((data >> 16) & 0xff);
bytes[4] = (byte) ((data >> 24) & 0xff);
bytes[3] = (byte) ((data >> 32) & 0xff);
bytes[2] = (byte) ((data >> 40) & 0xff);
bytes[1] = (byte) ((data >> 48) & 0xff);
bytes[0] = (byte) ((data >> 56) & 0xff);
}
return bytes;
}
/**
* 以字节数组的形式返回指定的单精度浮点值
*
* @param data 要转换的数字
* @return 长度为 4 的字节数组
*/
public static byte[] getBytes(float data) {
return getBytes(Float.floatToIntBits(data));
}
/**
* 以字节数组的形式返回指定的双精度浮点值
*
* @param data 要转换的数字
* @return 长度为 8 的字节数组
*/
public static byte[] getBytes(double data) {
return getBytes(Double.doubleToLongBits(data));
}
/**
* 将指定字符串中的所有字符编码为一个字节序列
*
* @param data 包含要编码的字符的字符串
* @return 一个字节数组,包含对指定的字符集进行编码的结果
*/
/**
* 将指定字符串中的所有字符编码为一个字节序列
*
* @param data 包含要编码的字符的字符串
* @param charsetName 字符集编码
* @return 一个字节数组,包含对指定的字符集进行编码的结果
*/
public static byte[] getBytes(String data, String charsetName) {
return data.getBytes(Charset.forName(charsetName));
}
/**
* 返回由字节数组转换来的布尔值
*
* @param bytes 字节数组
* @return 布尔值
*/
public static boolean toBoolean(byte[] bytes) {
return bytes[0] == 0 ? false : true;
}
/**
* 返回由字节数组中的指定的一个字节转换来的布尔值
*
* @param bytes 字节数组
* @param startIndex 起始下标
* @return 布尔值
*/
public static boolean toBoolean(byte[] bytes, int startIndex) {
return toBoolean(copyFrom(bytes, startIndex, 1));
}
/**
* 返回由字节数组转换来的 16 位有符号整数
*
* @param bytes 字节数组
* @return 由两个字节构成的 16 位有符号整数
*/
public static short toShort(byte[] bytes) {
if (isLittleEndian()) {
return (short) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)));
} else {
return (short) ((0xff & bytes[1]) | (0xff00 & (bytes[0] << 8)));
}
}
/**
* 返回由字节数组中的指定的两个字节转换来的 16 位有符号整数
*
* @param bytes 字节数组
* @param startIndex 起始下标
* @return 由两个字节构成的 16 位有符号整数
*/
public static short toShort(byte[] bytes, int startIndex) {
return toShort(copyFrom(bytes, startIndex, 2));
}
/**
* 返回由字节数组转换来的 Unicode 字符
*
* @param bytes 字节数组
* @return 由两个字节构成的字符
*/
public static char toChar(byte[] bytes) {
if (isLittleEndian()) {
return (char) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)));
} else {
return (char) ((0xff & bytes[1]) | (0xff00 & (bytes[0] << 8)));
}
}
/**
* 返回由字节数组中的指定的两个字节转换来的 Unicode 字符
*
* @param bytes 字节数组
* @param startIndex 起始下标
* @return 由两个字节构成的字符
*/
public static char toChar(byte[] bytes, int startIndex) {
return toChar(copyFrom(bytes, startIndex, 2));
}
/**
* 返回由字节数组转换来的 32 位有符号整数
*
* @param bytes 字节数�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
SpringBoot实现UDP通信、增删改查 (1247个子文件)
,CKEDITOR.tools.htmlEncode(e._[ 1KB
,CKEDITOR.tools.htmlEncode(e._[ 1KB
,CKEDITOR.tools.htmlEncode(e._[ 1KB
,CKEDITOR.tools.htmlEncode(e._[ 1KB
,CKEDITOR.tools.htmlEncode(e._[ 1KB
_div style= 1KB
_div style= 1KB
_div style= 1KB
_div style= 1KB
_div style= 1KB
application.properties.bat 265B
application.properties.bat 265B
application.properties.bat 265B
application.properties.bat 265B
application.properties.bat 265B
UpdateController.class 7KB
UpdateController.class 7KB
ByteUtils.class 7KB
ByteUtils.class 7KB
ByteUtils.class 7KB
NetWorkState.class 7KB
NetWorkState.class 7KB
NetWorkState.class 7KB
UserController.class 6KB
UserController.class 6KB
BitConverter.class 6KB
BitConverter.class 6KB
UdpServer.class 6KB
UdpServer.class 6KB
BitConverter.class 6KB
DeviceStatus.class 5KB
DeviceStatus.class 5KB
UdpServer.class 5KB
DeviceStatus.class 5KB
Information.class 5KB
Information.class 5KB
SaveEdit.class 5KB
UpdateController.class 4KB
PlayRecordingController.class 4KB
PlayRecordingController.class 4KB
SaveEdit.class 4KB
SaveEdit.class 4KB
StopPlayRecordingController.class 4KB
StopPlayRecordingController.class 4KB
WebCommand.class 3KB
WebCommand.class 3KB
WebCommand.class 3KB
BeginRecordController.class 3KB
BeginRecordController.class 3KB
RecordController.class 3KB
RecordController.class 3KB
NetWorkIP.class 3KB
NetWorkIP.class 3KB
NetWorkIP.class 3KB
RecordController.class 2KB
Xadc.class 2KB
Xadc.class 2KB
UserController.class 2KB
ReadFromFile.class 2KB
ReadFromFile.class 2KB
ReadFromFile.class 2KB
UdpSimpleClient.class 2KB
Communication.class 2KB
Communication.class 2KB
UdpSimpleClient.class 2KB
UdpSimpleClient.class 2KB
WebConfigurer.class 2KB
WebConfigurer.class 2KB
WebConfigurer.class 2KB
SoundRecord.class 2KB
SoundRecord.class 2KB
SoundRecord.class 2KB
GetFileNameToJson.class 2KB
GetFileNameToJson.class 2KB
GetFileNameToJson.class 2KB
SaveFile.class 1KB
SaveFile.class 1KB
SaveFile.class 1KB
UdpServer$UdpProcess.class 1KB
UdpServer$UdpProcess.class 1KB
UdpServer$UdpProcess.class 1KB
GetFile.class 1KB
Application.class 1KB
Application.class 1KB
Application.class 1KB
GetFile.class 1KB
GetFile.class 1KB
UdpServer$Process.class 1KB
UdpServer$Process.class 1KB
UdpServer$Process.class 1KB
UserController$1.class 962B
UserController$1.class 962B
IntIP.class 952B
IntIP.class 952B
Application.class 705B
UdpCache.class 690B
UdpCache.class 690B
UdpCache.class 690B
TestController.class 665B
bootstrap.min.css 107KB
共 1247 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
资源评论
九点两刻
- 粉丝: 548
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功