package com.smart.utils;
import java.nio.charset.Charset;
import org.apache.commons.lang3.ArrayUtils;
/**
*
* @Description: 字节数组转换工具类
* @author fun
* @date 2019年3月27日
*/
public class BytesUtils {
public static final String GBK = "GBK";
public static final String UTF8 = "utf-8";
public static final char[] ascii = "0123456789ABCDEF".toCharArray();
private static char[] HEX_VOCABLE = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
/**
* 将short整型数值转换为字节数组
*
* @param data
* @return
*/
public static byte[] getBytes(short data) {
byte[] bytes = new byte[2];
bytes[0] = (byte) ((data & 0xff00) >> 8);
bytes[1] = (byte) (data & 0xff);
return bytes;
}
/**
* 将字符转换为字节数组
*
* @param data
* @return
*/
public static byte[] getBytes(char data) {
byte[] bytes = new byte[2];
bytes[0] = (byte) (data >> 8);
bytes[1] = (byte) (data);
return bytes;
}
/**
* 将布尔值转换为字节数组
*
* @param data
* @return
*/
public static byte[] getBytes(boolean data) {
byte[] bytes = new byte[1];
bytes[0] = (byte) (data ? 1 : 0);
return bytes;
}
/**
* 将整型数值转换为字节数组
*
* @param data
* @return
*/
public static byte[] getBytes(int data) {
byte[] bytes = new byte[4];
bytes[0] = (byte) ((data & 0xff000000) >> 24);
bytes[1] = (byte) ((data & 0xff0000) >> 16);
bytes[2] = (byte) ((data & 0xff00) >> 8);
bytes[3] = (byte) (data & 0xff);
return bytes;
}
/**
* 将long整型数值转换为字节数组
*
* @param data
* @return
*/
public static byte[] getBytes(long data) {
byte[] bytes = new byte[8];
bytes[0] = (byte) ((data >> 56) & 0xff);
bytes[1] = (byte) ((data >> 48) & 0xff);
bytes[2] = (byte) ((data >> 40) & 0xff);
bytes[3] = (byte) ((data >> 32) & 0xff);
bytes[4] = (byte) ((data >> 24) & 0xff);
bytes[5] = (byte) ((data >> 16) & 0xff);
bytes[6] = (byte) ((data >> 8) & 0xff);
bytes[7] = (byte) (data & 0xff);
return bytes;
}
/**
* 将float型数值转换为字节数组
*
* @param data
* @return
*/
public static byte[] getBytes(float data) {
int intBits = Float.floatToIntBits(data);
return getBytes(intBits);
}
/**
*
* @Title: getBytes
* @Description: 将double型数值转换为字节数组
* @return byte[]
* @author fun
* @date 2019年3月27日
*/
public static byte[] getBytes(double data) {
long intBits = Double.doubleToLongBits(data);
return getBytes(intBits);
}
/**
*
* @Title: getBytes
* @Description: 将字符串按照charsetName编码格式的字节数组
* @return byte[]
* @param data 字符串
* @param charsetName
* @author fun
* @date 2019年3月27日
*/
public static byte[] getBytes(String data, String charsetName) {
Charset charset = Charset.forName(charsetName);
return data.getBytes(charset);
}
/**
*
* @Title: getBytes
* @Description: 将字符串按照GBK编码格式的字节数组
* @return byte[]
* @author fun
* @date 2019年3月27日
*/
public static byte[] getBytes(String data) {
return getBytes(data, GBK);
}
/**
*
* @Title: getBoolean
* @Description: 将字节数组第0字节转换为布尔值
* @return boolean
* @author fun
* @date 2019年3月27日
*/
public static boolean getBoolean(byte[] bytes) {
return bytes[0] == 1;
}
/**
*
* @Title: getBoolean
* @Description: 将字节数组的第index字节转换为布尔值
* @return boolean
* @author fun
* @date 2019年3月27日
*/
public static boolean getBoolean(byte[] bytes, int index) {
return bytes[index] == 1;
}
/**
*
* @Title: getShort
* @Description: 将字节数组前2字节转换为short整型数值
* @return short
* @author fun
* @date 2019年3月27日
*/
public static short getShort(byte[] bytes) {
return (short) ((0xff00 & (bytes[0] << 8)) | (0xff & bytes[1]));
}
/**
*
* @Title: getShort
* @Description: 将字节数组从startIndex开始的2个字节转换为short整型数值
* @return short
* @author fun
* @date 2019年3月27日
*/
public static short getShort(byte[] bytes, int startIndex) {
return (short) ((0xff00 & (bytes[startIndex] << 8)) | (0xff & bytes[startIndex + 1]));
}
/**
*
* @Title: getChar
* @Description: 将字节数组前2字节转换为字符
* @return char
* @author fun
* @date 2019年3月27日
*/
public static char getChar(byte[] bytes) {
return (char) ((0xff00 & (bytes[0] << 8)) | (0xff & bytes[1]));
}
/**
*
* @Title: getChar
* @Description: 将字节数组从startIndex开始的2个字节转换为字符
* @return char
* @author fun
* @date 2019年3月27日
*/
public static char getChar(byte[] bytes, int startIndex) {
return (char) ((0xff00 & (bytes[startIndex] << 8)) | (0xff & bytes[startIndex + 1]));
}
/**
*
* @Title: getInt
* @Description: 将字节数组前4字节转换为整型数值
* @return int
* @author fun
* @date 2019年3月27日
*/
public static int getInt(byte[] bytes) {
return (0xff000000 & (bytes[0] << 24) | (0xff0000 & (bytes[1] << 16)) | (0xff00 & (bytes[2] << 8))
| (0xff & bytes[3]));
}
/**
*
* @Title: getInt
* @Description: 将字节数组从startIndex开始的4个字节转换为整型数值
* @return int
* @author fun
* @date 2019年3月27日
*/
public static int getInt(byte[] bytes, int startIndex) {
return (0xff000000 & (bytes[startIndex] << 24) | (0xff0000 & (bytes[startIndex + 1] << 16))
| (0xff00 & (bytes[startIndex + 2] << 8)) | (0xff & bytes[startIndex + 3]));
}
/**
* 将字节数组前8字节转换为long整型数值
*
* @param bytes
* @return
*/
public static long getLong(byte[] bytes) {
return (0xff00000000000000L & ((long) bytes[0] << 56) | (0xff000000000000L & ((long) bytes[1] << 48))
| (0xff0000000000L & ((long) bytes[2] << 40)) | (0xff00000000L & ((long) bytes[3] << 32))
| (0xff000000L & ((long) bytes[4] << 24)) | (0xff0000L & ((long) bytes[5] << 16))
| (0xff00L & ((long) bytes[6] << 8)) | (0xffL & (long) bytes[7]));
}
/**
* 将字节数组从startIndex开始的8个字节转换为long整型数值
*
* @param bytes
* @param startIndex
* @return
*/
public static long getLong(byte[] bytes, int startIndex) {
return (0xff00000000000000L & ((long) bytes[startIndex] << 56)
| (0xff000000000000L & ((long) bytes[startIndex + 1] << 48))
| (0xff0000000000L & ((long) bytes[startIndex + 2] << 40))
| (0xff00000000L & ((long) bytes[startIndex + 3] << 32))
| (0xff000000L & ((long) bytes[startIndex + 4] << 24))
| (0xff0000L & ((long) bytes[startIndex + 5] << 16)) | (0xff00L & ((long) bytes[startIndex + 6] << 8))
| (0xffL & (long) bytes[startIndex + 7]));
}
/**
* 将字节数组前4字节转换为float型数值
*
* @param bytes
* @return
*/
public static float getFloat(byte[] bytes) {
return Float.intBitsToFloat(getInt(bytes));
}
/**
* 将字节数组从startIndex开始的4个字节转换为float型数值
*
* @param bytes
* @param startIndex
* @return
*/
public static float getFloat(byte[] bytes, int startIndex) {
byte[] result = new byte[4];
System.arraycopy(bytes, startIndex, result, 0, 4);
return Float.intBitsToFloat(getInt(result));
}
/**
* 将字节数组前8字节转换为double型数值
*
* @param bytes
* @return
*/
public static double getDouble(byte[] bytes) {
long l = getLong(bytes);
return Double.longBitsToDouble(l);
}
/**
* 将字节数组从startIndex开始的8个字节转换为double型数值
*
* @param bytes
* @param startIndex
* @return
*/
public static double getDouble(byte[] bytes, int startIndex) {
byte[] result = new byte[8];
System.arraycopy(bytes, startIndex, result, 0, 8);
long l = getLong(result);
return Double.longBitsToDouble(l);
}
/**
* 将char
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于物联网的智能厂房,运用树莓派出开发板,5个传感器,继电器使用java语言开发的web管理系统带有基础权限控制系统后台使用spring boot springsecurity集成开发前端使用thymeleaf vue.js进行开发数据库使用MySQL的 【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
毕设&课设&项目&实训-基于物联网的智能厂房,运用树莓派出开发板,5个传感器,进行开发数据库使用MySQL的.zip (669个子文件)
BytesUtils.class 13KB
SensorServiceImpl.class 10KB
EquipmentServiceImpl.class 9KB
SecurityConfig.class 6KB
DateUtils.class 6KB
Dht11Controller.class 6KB
SensorDataResult.class 5KB
I2cSensorProperties.class 5KB
SensorCopyServiceImpl.class 5KB
UserInfo.class 4KB
SensorCopy.class 4KB
Sensor.class 4KB
EquipmentController.class 4KB
ExceptionEnum.class 4KB
RoleController.class 4KB
HelloController.class 4KB
Threshold.class 4KB
Equipment.class 4KB
SensorCopyResult.class 4KB
SensorController.class 3KB
RoleServiceImpl.class 3KB
Role.class 3KB
Permission.class 3KB
UserServiceImpl.class 3KB
SensorInfoResult.class 3KB
CustomUserService.class 3KB
ThresholdController.class 3KB
UserController.class 3KB
PageResult.class 3KB
ThresholdServiceImpl.class 3KB
I2cRelayProperties.class 3KB
SensorDataRequest.class 3KB
ExceptionResult.class 3KB
ContextualModel.class 3KB
PermissionController.class 2KB
ContextualModelController.class 2KB
PermissionServiceImpl.class 2KB
SensorCopyController.class 2KB
MyAccessDeniedHandler.class 2KB
SensorCopyMapper.class 2KB
CommonExceptionHandler.class 2KB
SensorMapper.class 1KB
MyPasswordEncode.class 1KB
GpioUtils.class 1KB
RoleMapper.class 1KB
CodecUtils.class 969B
EquipmentService.class 869B
SmartApplication.class 830B
RoleService.class 678B
FactoryException.class 650B
ThresholdService.class 503B
UserService.class 493B
PermissionMapper.class 463B
UserMapper.class 457B
ContextualModelMapper.class 453B
SensorService.class 448B
EquipmentMapper.class 430B
PermissionService.class 411B
SensorCopyService.class 327B
ThresholdMapper.class 269B
bootstrap.css 170KB
bootstrap.css 170KB
bootstrap.min.css 138KB
bootstrap.min.css 138KB
style.default.css 92KB
style.default.css 92KB
style.pink.css 92KB
style.pink.css 92KB
style.violet.css 92KB
style.sea.css 92KB
style.blue.css 92KB
style.green.css 92KB
style.violet.css 92KB
style.sea.css 92KB
style.blue.css 92KB
style.green.css 92KB
style.red.css 92KB
style.red.css 92KB
bootstrap-grid.css 37KB
bootstrap-grid.css 37KB
bootstrap-grid.min.css 28KB
bootstrap-grid.min.css 28KB
bootstrap-reboot.css 5KB
bootstrap-reboot.css 5KB
orionicons.css 4KB
orionicons.css 4KB
iconfont.css 4KB
iconfont.css 4KB
bootstrap-reboot.min.css 4KB
bootstrap-reboot.min.css 4KB
back.css 305B
back.css 305B
custom.css 25B
custom.css 25B
orion-font.eot 18KB
orion-font.eot 18KB
preview.html 56KB
preview.html 56KB
gather_data.html 26KB
gather_data.html 26KB
共 669 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
妄北y
- 粉丝: 2w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于k折交叉验证的支持向量机回归预测MATLAB程序,采用n折交叉验证确定损失参数C与核参数g;代码注释清楚 main为主程序,读取EXCEL数据,也可以自己数据集 很方便,容易上手
- 链表HuffmanTree.zip
- Xshell+Xmanager+Xftp全家桶-V8.0.0065 PC绿色特别版
- 《JavaScript》.pdf
- 基于椭圆拟合的多光斑重叠光斑中心提取方法
- OC-Dialect线上多语言(多列表) 4.SDK每个方法解析
- 扩展卡尔曼滤波soc估算 基于EKF算法的锂电池SOC 卡尔曼滤波估计电池soc ,simulink模型,对电池SOC参数进行辨识,充分考虑充放电倍率和环境温度,结合传统安时积分法和扩展卡尔曼滤波算法
- 基于springboot的墙绘产品展示交易平台的设计与实现源码(java毕业设计完整源码+LW).zip
- GBBO_Dataset.zip
- 基于springboot的网上租赁系统设计与实现源码(java毕业设计完整源码+LW).zip
- 强大的Lua引擎, 为mcu和物联网设备高度优化, 支持众多组件, 非常低的内存需求(最低16K RAM, 128K Flash)
- 2024年电赛H题代码
- 基于Web足球青训俱乐部管理后台系统开发源码(java毕业设计完整源码+LW).zip
- OC-Dialect线上多语言(多列表) 5.总结
- ACM考试题 ACM程序设计
- 基于springboot的师生健康信息管理系统源码(java毕业设计完整源码+LW).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功