Android(安卓)操作蓝牙Ble时数据转换的常用方法
16lz
2021-01-26
1.在操作蓝牙模块时候,Android 根据协议写数据,写入的是16进制数据 ,蓝牙返回来的数据也是16进制 。在这里 我们就要对数据转化。
2.下面是工作中常用的方法 ,写成了一个工具类 ,可以直接拿去用 。都是经过测试 有效
public class CommonUtil { /* * 将时间转换为时间戳 */ public static String dateToStamp(String s) throws ParseException { String res; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date date = simpleDateFormat.parse(s); long ts = date.getTime(); res = String.valueOf(ts); return res; } /** * 合并byte数组 */ public static byte[] unitByteArray(byte[] byte1,byte[] byte2){ byte[] unitByte = new byte[byte1.length + byte2.length]; System.arraycopy(byte1, 0, unitByte, 0, byte1.length); System.arraycopy(byte2, 0, unitByte, byte1.length, byte2.length); return unitByte; } /* * 16进制字符串转字节数组 */ public static byte[] hexString2Bytes(String hex) { if ((hex == null) || (hex.equals(""))){ return null; } else if (hex.length()%2 != 0){ return null; } else{ hex = hex.toUpperCase(); int len = hex.length()/2; byte[] b = new byte[len]; char[] hc = hex.toCharArray(); for (int i=0; i* * @param dt * @return 当前日期是星期几 */ public static String getWeekOfDate(Date dt) { String[] weekDays = {"07", "01", "02", "03", "04", "05", "06"}; Calendar cal = Calendar.getInstance(); cal.setTime(dt); int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; return weekDays[w]; } /** * 字符串转换成十六进制值 * @param bin String 我们看到的要转换成十六进制的字符串 * @return */ public static String bin2hex(String bin) { char[] digital = "0123456789ABCDEF".toCharArray(); StringBuffer sb = new StringBuffer(""); byte[] bs = bin.getBytes(); int bit; for (int i = 0; i < bs.length; i++) { bit = (bs[i] & 0x0f0) >> 4; sb.append(digital[bit]); bit = bs[i] & 0x0f; sb.append(digital[bit]); } return sb.toString(); } /** * 把16进制字符串转化为byte数组 * @param hexString * @return */ public static byte[] toByteArray(String hexString) { if (TextUtils.isEmpty(hexString)) throw new IllegalArgumentException("this hexString must not be empty"); hexString = hexString.toLowerCase(); final byte[] byteArray = new byte[hexString.length() / 2]; int k = 0; for (int i = 0; i < byteArray.length; i++) {//因为是16进制,最多只会占用4位,转换成字节需要两个16进制的字符,高位在先 byte high = (byte) (Character.digit(hexString.charAt(k), 16) & 0xff); byte low = (byte) (Character.digit(hexString.charAt(k + 1), 16) & 0xff); byteArray[i] = (byte) (high << 4 | low); k += 2; } return byteArray; } /** * 将byte数组转为16进制字符串 此方法主要目的为方便Log的显示 */ public String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; } for (byte aSrc : src) { int v = aSrc & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv.toUpperCase()).append(" "); } return stringBuilder.toString(); }}
3.以上就是基本常用的方法,直接调用就好了
更多相关文章
- Android蓝牙理论
- Article 2017- Q1
- Android(安卓)中 Base64 转换成 图片
- 【Android开发学习35】GL_TRIANGLE_STRIP之纹理贴图
- Android(安卓)RadialGradient 放射渲染
- [Android]【安卓】Json数据的快速拼装和解析
- Android(安卓)相关知识
- Android中实现震动的方法
- Android绘画之扭曲图像