bytez转String

/*** 字节数组转换成对应的16进制表示的字符串** @param src* @return*/
public static String bytes2HexStr(byte[] src) {StringBuilder builder = new StringBuilder();if (src == null || src.length <= 0) {return "";}char[] buffer = new char[2];for (int i = 0; i < src.length; i++) {buffer[0] = Character.forDigit((src[i] >>> 4) & 0x0F, 16);buffer[1] = Character.forDigit(src[i] & 0x0F, 16);builder.append(buffer);}return builder.toString().toUpperCase();
}/*** 十六进制字节数组转字符串** @param src    目标数组* @param dec    起始位置* @param length 长度* @return*/
public static String bytes2HexStr(byte[] src, int dec, int length) {byte[] temp = new byte[length];System.arraycopy(src, dec, temp, 0, length);return bytes2HexStr(temp);
}
BMSID = new String(bytes2, StandardCharsets.US_ASCII).trim();

字符串转 byte[]——含中文

/*** 字符串转byte数组* @param str* @return*/
public static byte[] strTobytes(String str){byte[] b=null,data=null;try{b = str.getBytes("utf-8");//data = new String(b,"utf-8").getBytes("gbk");data = new String(b,"utf-8").getBytes("gb2312");}catch (UnsupportedEncodingException e){e.printStackTrace();}return data;
}

字符串命令转 byte[]——不含中文

/*** 把十六进制表示的字节数组字符串,转换成十六进制字节数组** @param* @return byte[]*/
public static byte[] hexStr2bytes(String hex) {int len = (hex.length() / 2);byte[] result = new byte[len];char[] achar = hex.toUpperCase().toCharArray();for (int i = 0; i < len; i++) {int pos = i * 2;result[i] = (byte) (hexChar2byte(achar[pos]) << 4 | hexChar2byte(achar[pos + 1]));}return result;
}

String与byte转换

String s = "这是一段中文字符串";
byte[] b = new byte[0];
try {
    b = s.getBytes("UTF-8");
    String n = new String(b,"UTF-8");
    LgqLogutil.e(".......==="+n);
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

byte[]转二进制0010100

public static String convertToBinaryString(byte[] data) {LogPlus.e("###data len   -> " + data.length);StringBuilder sb = new StringBuilder();for (int i = 0, n = data.length; i < n; ++i) {String bin = Integer.toBinaryString(data[i] & 0xFF);StringBuilder binaryStr = new StringBuilder();final int zeroPaddingLen = 8 - bin.length();for (int j = 0; j < zeroPaddingLen; ++j) {binaryStr.append("0");}binaryStr.append(bin);sb.append(binaryStr);}return sb.toString();
}

二进制转十进制转byte[]

byte[] dataN = new byte[4];
int[] allLed = new int[32];
int value = Integer.parseInt(convertToBinnaryStr(allLed), 2);
byte[] lengthBytes = ByteUtil.int2Bytes(value, 4);
private String convertToBinnaryStr(int[] allLed) {StringBuilder sb = new StringBuilder();for (int b : allLed) {sb.append(b);}return sb.toString();
}
public static byte[] int2Bytes(int v, int len) {byte[] bytes = new byte[len];for (int i = 0; i < len; i++) {// 高位在前bytes[i] = (byte) ((v >>> (len - i - 1) * 8) & 0xff);}return bytes;
}

byte[]转十进制

public static int byteToInt(byte[] b) {int mask = 0xff;int temp;int n = 0;for (int i = 0; i < b.length; i++) {n <<= 8;temp = b[i] & mask;n |= temp;}return n;
}

byte[]拼接方法

byte[] dataN = new byte[6];
byte[] lengthBytes = ByteUtil.int2Bytes(liushui, 4);
System.arraycopy(lengthBytes, 0, dataN, 0, lengthBytes.length);
byte[] buyNumBytes = ByteUtil.int2Bytes(num, 1);
byte[] huodaohaoBytes = ByteUtil.int2Bytes(goodsWayId, 1);
System.arraycopy(huodaohaoBytes, 0, dataN, 4, 1);
System.arraycopy(buyNumBytes, 0, dataN, 5, 1);
setDataN(dataN);

校验

/*** 异或校验和** @param bytes* @param offset* @param len* @return*/
public static byte getXOR(byte[] bytes, int offset, int len) {// 计算校验和 byte toDiff = 0;// 校验和为除开校验位外的所有数据做异或for (int i = 0; i < len; i++) {toDiff = (byte) (toDiff ^ bytes[i + offset]);}return toDiff;
}
// 计算校验和
byte check = ByteUtil.getXOR(bytes, 0, bytes.length - 1);

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

/*** 总加和校验* @param data 十六进制字符串* @return 返回校验码*/
public static String checksum(String data) {if (data == null || data.equals("")) {return "";}int total = 0;int len = data.length();int num = 0;while (num < len) {String s = data.substring(num, num + 2);System.out.println(s);total += Integer.parseInt(s, 16);num = num + 2;}/*** 用256求余最大是255,即16进制的FF*/int mod = total % 256;String hex =String.format("%02X", mod);return hex;
}
String jiaoyuan = checksum("85"+datas);

----------------------------------------------------------------------------

public static byte[] getXOR(byte[] bytes, int len) {byte[] partBytes = new byte[len];System.arraycopy(bytes,0,partBytes,0,partBytes.length);//LogPlus.e("###hex:" + ByteUtil.bytes2HexStr(partBytes));final short POLYNOMIAL = 0x1021;final int INITIAL_REMAINDER = 0xA1EC;final int TOPBIT = 1 << (16 - 1);int remainder = INITIAL_REMAINDER;for (int ibyte = 0; ibyte < len; ++ibyte) {remainder ^= ((partBytes[ibyte]) << (16 - 8));for (int i = 8; i > 0; --i) {if ((remainder & TOPBIT) != 0) {remainder = (remainder << 1) ^ POLYNOMIAL;} else {remainder = (remainder << 1);}}}byte[] crcBytes = new byte[2];return ByteUtil.long2bytes(remainder, crcBytes, 0, 2);}
// 计算校验和
byte check = ByteUtil.getXOR(bytes, 0, bytes.length - 1);

串口开发,数据类型转换——字符串转 byte[],byte[]转二进制,二进制转十进制转byte[],byte[]转十进制,byte[]拼接,校验相关推荐

  1. pgsql 比较数字字符串_postgreSQL数据类型转换字符串和数值

    1.将数值转成字符串类型 方法1:调用to_char(int, text)函数,int为要转换值,text为数值格式化模式,其中模式描述为: 模式 描述 9 带有指定数值位数的值 0 带前导零的值 . ...

  2. PHP数据类型转换(字符串转数字,数字转字符串)

    PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有:(int).(integer):转换成整形 (float).(double).(real):转换成浮点型 (string):转换成字符串 ...

  3. 四种数据类型转换字符串类型的 三种方法

    1.Number类型 2.Boolean类型 3.undefined类型 4.null类型 在JavaScript中如果想将以上的四种基本数据类型转换为字符串类型, 常用的方法有三种 1.对于Numb ...

  4. Java中的byte[]/char[]/int/String数据类型转换

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51743969 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  5. 新手入门上位机开发 C#语言:PC串口发送数据

    题目概述: VS2017开发环境 PC串口发送数据 编程: namespace _004_7_28 { public partial class Form1 : Form {public Form1( ...

  6. python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)...

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

  7. Javascript数据类型:变量与数据类型 数字型Number 字符串型String 布尔型Boolean Undefined和Null 检测变量typeof 数据类型转换 标识符 关键字 保留字

    数据类型 一.数据类型意义 二.变量与数据类型 三.简单数据类型 1.数字型 Number 2.字符串型 String 3.布尔型 Boolean 4.未定义数据类型 Undefined 5.空值 N ...

  8. 【Arduino】开发入门教程【六】数据类型转换函数

    Arduino数据类型转换函数有 char() : 将任意类型的值转换成char类型; byte():  将任意类型的值转换成byte类型; int():  将任意类型的值转换成int类型; long ...

  9. arduino向串口发送数据时掉包_[技术]清楚简单,一种串口触摸屏的开发流程和方法介绍...

    1.什么是串口触摸屏 触摸屏是工业控制上很常见的人机交互部件,很多设备.系统都在使用它,它至少有两个功能:显示,触摸控制. 串口触摸屏是采用串行数据通信协议进行数据交换的触摸屏,具有简单.可靠.易于操 ...

最新文章

  1. substring java_Java String.substring()用法
  2. VR中的白帽机制,这把安全的双刃剑应该如何使用?
  3. tensorflow就该这么学--4(识别手写数字)
  4. 再深一点:面试工作两不误,源码级理解Spring事务
  5. php比较float大小,PHP中两个float(浮点数)比较实例分析
  6. Swift基本语法学习笔记
  7. 中国石油计算机文化基础答案,中国石油大学17年秋《计算机文化基础》第二次在线作业答案...
  8. Java通过引用操作对象的“共享”特性
  9. docker registry push 覆盖_原创 | 全网最实在的docker入门教程四
  10. spring boot之security
  11. 全栈性能测试修炼宝典jmeter实战电子版_推荐一款技术人必备的接口测试神器:Apifox...
  12. 毕业设计总结与展望、致谢-“完工总结会”-08
  13. js获取今天剩余时间_骚姿势获取无线路由器后台权限
  14. JAVA解析字符串数学公式
  15. windows10 训练word2vec 中文语料
  16. 如何利用开关量信号传输装置实现工厂智能化技改?
  17. (IROS 2022) 基于事件相机的单目视觉惯性里程计 / Event-based Monocular Visual Inertial Odometry
  18. android打地鼠案例
  19. 毕业一年有感——人活着的意义是什么?
  20. 学习记录 - Simpack之轨道车辆如何生成车轮不圆

热门文章

  1. [html] 说说你对HTML5中“一次编写,全体使用”的理解
  2. [vue] 说说你觉得认为的vue开发规范有哪些?
  3. [css] 写出div在不固定高度的情况下水平垂直居中的方法?
  4. 前端学习(2788):完成图片商品数据页面渲染
  5. 前端学习(2665):完成vue3.0的todolist添加
  6. 前端学习(1979)vue之电商管理系统电商系统之让文本框获得焦点
  7. 前端学习(606):计算机基础
  8. 前端学习(225):尺寸属性
  9. java学习(133):泛型
  10. 玩转oracle 11g(32):plsql版本低需到配置文件中添加配置