______________________________________________________________
Android BLE 框架发布,功能全面,简单易用:
https://github.com/a1anwang/okble
______________________________________________________________
(1) byte[] 数组转成 16进制字符串
private final static byte[] hex = "0123456789ABCDEF".getBytes(); // 从字节数组到十六进制字符串转 public static String Bytes2HexString(byte[] b) { byte[] buff = new byte[2 * b.length]; for (int i = 0; i < b.length; i++) { buff[2 * i] = hex[(b[i] >> 4) & 0x0f]; buff[2 * i + 1] = hex[b[i] & 0x0f]; } return new String(buff); }
示例:
byte[] bytes_1=new byte[]{(byte) 0xA0,(byte) 0xB1,0x2}; String hexStr=Conversion.Bytes2HexString(bytes_1); LogUtils.print("hexStr:"+hexStr); 结果:hexStr:A0B102
(2) 16进制字符串转成 byte[] 数组
public static byte[] hexStringToBytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } hexString = hexString.toUpperCase(); int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] d = new byte[length]; for (int i = 0; i < length; i++) { int pos = i * 2; d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); } return d; }
示例:
String strvalue = "A0B102"; byte[] bytes_2=Conversion.hexStringToBytes(strvalue); String hexStr=Conversion.Bytes2HexString(bytes_2); LogUtils.print("hexStr:"+hexStr); 结果:hexStr:A0B102
(3) 16进制字符串转成 int 整数
public static int hexStrToInt(String valueStr) { valueStr = valueStr.toUpperCase(); if (valueStr.length() % 2 != 0) { valueStr = "0" + valueStr; } int returnValue = 0; int length = valueStr.length(); for (int i = 0; i < length; i++) { int value = charToByte(valueStr.charAt(i)); returnValue += Math.pow(16, length - i - 1) * value; } return returnValue; } public static byte charToByte(char c) { return (byte) "0123456789ABCDEF".indexOf(c); }示例:
String strvalue = "A0B102"; int value=Conversion.hexStrToInt(strvalue); LogUtils.print(" value:"+value); LogUtils.print("0xA0B102:"+0xA0B102); 结果: hexStr:10531074 0xA0B102:10531074

(4) int 转16进制
public static String intToHexStr(int i){ String hexStr= Integer.toHexString(i); if(hexStr.length()%2!=0){ hexStr="0"+hexStr; } return hexStr.toUpperCase(); }
示例:
LogUtils.e("TAG", "hexStr:"+Conversion.intToHexStr(10));结果:
hexStr:0A
(5) byte转bit
public static String byteToBit(byte b) { return "" +(byte)((b >> 7) & 0x1) + (byte)((b >> 6) & 0x1) + (byte)((b >> 5) & 0x1) + (byte)((b >> 4) & 0x1) + (byte)((b >> 3) & 0x1) + (byte)((b >> 2) & 0x1) + (byte)((b >> 1) & 0x1) + (byte)((b >> 0) & 0x1); }(6) bit转byte
public static byte BitToByte(String byteStr) { int re, len; if (null == byteStr) { return 0; } len = byteStr.length(); if (len != 4 && len != 8) { return 0; } if (len == 8) {// 8 bit处理 if (byteStr.charAt(0) == '0') {// 正数 re = Integer.parseInt(byteStr, 2); } else {// 负数 re = Integer.parseInt(byteStr, 2) - 256; } } else {//4 bit处理 re = Integer.parseInt(byteStr, 2); } return (byte) re; }
(7) byte[]截取
public static byte[] subByteArray(byte[] src,int start,int length){ byte[] result=new byte[length]; System.arraycopy(src, start, result, 0, length); return result; }
本博客所有文章如无特别注明均为原创。作者:AlanWang ,复制或转载请以超链接形式注明转自 AlanWang的博客-专注android和蓝牙BLE技术分享 。
原文地址《Android BLE 数据转换方法集合》
原文地址《Android BLE 数据转换方法集合》
发表评论