Android与单片机通信常用数据转换方法总结
Android与单片机通信常用数据转换方法
1. 将GB2312转化为中文,如BAFAC2DCB2B7→胡萝卜,两个字节合成一个文字
public static String stringToGbk(String string) throws Exception { byte[] bytes = new byte[string.length() / 2]; for (int j = 0; j < bytes.length; j++) { byte high = Byte.parseByte(string.substring(j * 2, j * 2 + 1), 16); byte low = Byte.parseByte(string.substring(j * 2 + 1, j * 2 + 2), 16); bytes[j] = (byte) (high << 4 | low); } String result = new String(bytes, "GBK"); return result; }
2.将中文转化为GB2312,并且结果以byte[]形式返回,如胡萝卜→new byte[]{BA FA C2 DC B2 B7},一个字被分为两个字节
public static byte[] gbkToString(String str) throws Exception { return new String(str.getBytes("GBK"), "gb2312").getBytes("gb2312"); }
3.将十六进制的byte[]原封不动的转化为string,如byte[]{0x7e,0x80,0x11,0x20}→7e801120,可用于log打印
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(); }
4.将十六进制的byte[]原封不动的转化为string,并且每个byte之间用空格分开,如byte[]{0x7e,0x80,0x11,0x20}→7e 80 11 20,,可用于log打印
public static StringBuilder byte2HexStr(byte[] data) { if (data != null && data.length > 0) { StringBuilder stringBuilder = new StringBuilder(data.length); for (byte byteChar : data) { stringBuilder.append(String.format("%02X ", byteChar)); } return stringBuilder; } return null; }
5.将byte[]数组转化为8、10、16等各种进制,例如byte[0x11,0x20]→4384,约等于1120(16进制)→4384,radix代表进制
public static String bytesToAllHex(byte[] bytes, int radix) { return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数 }
6.将String的十六进制原封不动转化为byte的十六进制,例如7e20→new byte[]{0x7e,x20}
public static byte[] HexString2Bytes(String src) { byte[] ret = new byte[src.length() / 2]; byte[] tmp = src.getBytes(); for (int i = 0; i < tmp.length / 2; i++) { ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]); } return ret; }
public static byte uniteBytes(byte src0, byte src1) { byte _b0 = Byte.decode("0x" + new String(new byte[] { src0 })) .byteValue(); _b0 = (byte) (_b0 << 4); byte _b1 = Byte.decode("0x" + new String(new byte[] { src1 })) .byteValue(); byte ret = (byte) (_b0 ^ _b1); return ret; }
以上就是对Android 与单片机通信的资料整理,后续继续补充相关资料谢谢大家对本站的支持!
- C语言宏定义结合全局变量的方法实现单片机串口透传模式
- android实现手机与单片机蓝牙模块通信
- Android Socket 线程连接openwrt与arduino单片机串口双向通信的实例解析
- Android单片机与蓝牙模块通信实例代码
- 使用UART与PC通信实现msp430g2553单片机超声波测距示例
- c#实现51单片机频率计的代码分享(数字频率计设计)
- 关于单片机按键问题性能提升总结
转载请注明出处:http://www.zhongtian365.com/article/20230526/186615.html
随机推荐
-
Android获取与设置系统环境变量的方法指南
前言 在Android源码的分析过程中经常会看到System.getenv(“xxx”)和getenv(“xxx”)以及Os.getenv(“xxx”)获取Android系统的环境变量值,本篇的重点不是分析代码的调用逻辑,而是讲解怎么在A...
-
Android Activity与Fragment实现底部导航器
单Activity多Fragment实现底部导航器 最近由于Android基础知识讲解需要,采用单Activity多Fragment实现类似QQ底部导航器示例,这种开发模式广泛应用于App开发,比如QQ,微信,新浪等,关于Android底...
-
Android ListView与RecycleView的对比使用解析
ListView,就如其名,是用来显示列表的一种View,而RecycleView,是其的加强版,今天带来的是这两个几乎具有相同的功能的对比使用 先从ListView说起吧 ListView: 1.在布局文件中使用ListView,并为其...
-
android studio与Java服务器之间的通信。问题GRPC
我需要设置一个android工作室应用程序和java服务器之间的通信,我尝试了XMLRPC,但它不起作用,我正在尝试GRPC目前,但不知道如何从android工作室的proto文件生成代码。这是我在服务器端的代码,public class ...
-
详解android与百度echarts项目整合方法
百度echarts是一个很不错的图表项目,效果很绚丽。 用起来也不知很繁琐。 这里主要说在android项目中的整合。 1、项目整合,这个地方我是一个已经在使用的项目中整合的例子。 用的就不是android studio而是eclips...
-
详解android与服务端交互的两种方式
做Android开发的程序员必须知道android客户端应该如何与服务端进行交互,这里主要介绍的是使用json数据进行交互。服务端从数据库查出数据并以json字符串的格式或者map集合的格式返回到客户端,客户端进行解析并输出到手机屏幕上。...
-
Android App 与 U 盘通信示例详解
前言 对于 U 盘的了解,相信大多数人应该只停留在跟 U 盘跟电脑通信的阶段,其实现在通过OTG 线就可以实现手机跟 U 盘之间的数据操作,不仅可以将 U 盘中的文件读取到手机中来,还能将手机中的文件导出到 U 盘中,从而实现手机与 U ...
-
Android Activity与Intent详解及示例代码
Android有三个基础组件Activity,Service和BroadcastReceiver,他们都是依赖Intent来启动。本文介绍的是Activity的生命周期以及针对Activity的Intent使用。 之前的例子一直都是使用...
-
Android Intent与IntentFilter案例详解
1. 前言 在Android中有四大组件,这些组件中有三个组件与Intent相关,可见Intent在Android整个生态中的地位高度。Intent是信息的载体,用它可以去请求组件做相应的操作,但是相对于这个功能,Intent本身的...
-
Android Fragment与Activity之间的相互通信实例代码
Android Fragment与Activity之间的相互通信 前言 自从Android3.0引入Fragment之后,主要是为了支持动态灵活的界面设计和屏幕的适配问题。Fragmenty不能单独存在,必须依赖Activity作为视图...