Java字节转换工具类,Android蓝牙转码
开发中用到的字节工具类,对蓝牙的传输数据进行求和等。。。
public class ByteUtil {
/**
* 字节转十六进制 为相应的字符串显示
*/
public static String byte2Hex(byte data[]) {
if (data != null && data.length > 0) {
StringBuilder sb = new StringBuilder(data.length);
for (byte tmp : data) {
sb.append(String.format("%02X", tmp));
}
return sb.toString();
}
return "no data";
}
/**
* byte数组转十六进制 为相应的字符串显示
*/
public static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
/**
* byte数组的16进制累加和
*/
public static byte[] bytesGetSum(byte[] src) {
int total = 0;
int len = src.length;
byte[] des = new byte[len + 1];
if (src == null || len <= 0) {
des[len] = (byte) Integer.parseInt("ff", 16);
return des;
}
for (int i = 0; i < len; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
total += Integer.parseInt(hv, 16);
des[i] = (byte) Integer.parseInt(hv, 16);
}
/**
* 用256求余最大是255,即16进制的FF
*/
int mod = total % 256;
String hex = Integer.toHexString(mod);
// 如果不够校验位的长度,补0,这里用的是两位校验
if (hex.length() < 2) {
hex = "0" + hex;
}
des[len] = (byte) Integer.parseInt(hex, 16);
return des;
}
/**
* 字符串的16进制累加和
*/
public static String stringGetSum(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);
total += Integer.parseInt(s, 16);
num = num + 2;
}
/**
* 用256求余最大是255,即16进制的FF
*/
int mod = total % 256;
String hex = Integer.toHexString(mod);
len = hex.length();
// 如果不够校验位的长度,补0,这里用的是两位校验
if (len < 2) {
hex = "0" + hex;
}
return hex;
}
/**
* 获取步数
*/
public static int makeStep(String data) {
if (data == null || data.equals("")) {
return 0;
}
int total = 0;
int len = data.length();
int num = 0;
while (num < len) {
String s = data.substring(num, num + 2);
total += Integer.parseInt(s, 16);
num = num + 2;
}
return total;
}
public static void main(String[] args) {
System.out.println(bytesToHexString(bytesGetSum(new byte[]{(byte) 0xAA, (byte) 0xAA, 0x06, 0x01, 0x06})));
}
}
Java字节转换工具类,Android蓝牙转码
https://blog.jeecloud.cn/2018/01/18/20180118092200/