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 与单片机通信的资料整理,后续继续补充相关资料谢谢大家对本站的支持!

时间: 2017-12-04

Android与单片机通信常用数据转换方法总结的相关文章

Android与单片机通信常用数据转换方法总结_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(s

app-android中传递数据并画图(与单片机通信)

问题描述 android中传递数据并画图(与单片机通信) 小妹新人,求大牛指导.在做一个APP,要与单片机通信,先要实现调参和画图,做有关项目的讲解一下,感激不进!!! 解决方案 android与单片机通信,推荐用蓝牙技术. 调参和画图,不甚了解! 解决方案二: 我现在正在做一个android蓝牙控制PLC的项目,处理通讯的时候请注意,发数据没有什么特别,收数据由于采用的消息传送都是分段的,需要自己重新拼接一下.

Android蓝牙开发,与HC-06单片机通信,更新数据太慢

问题描述 Android蓝牙开发,与HC-06单片机通信,更新数据太慢 各位大侠好,目前做Android手机蓝牙与单片机HC-06蓝牙模块的通信问题,单片机给我不断的发送数据包,一个数据包是18位, 我只需要其中的第7,8位字节,来表示湿度,第10,11位字节,来表示温度,发送数据格式如下:FD 0E 00 00 00 00 00 01 75 00 B8 2E 16 A5 EF 04 68 77,其中0175表示湿度,B82E表示温度,代码片段如下: 求各位大神帮忙看一下,为什么我后台数据更新为

android通过socket通信实现客户端读取服务端的二进制数据,并展示在textview控件上

问题描述 android通过socket通信实现客户端读取服务端的二进制数据,并展示在textview控件上 客户端通过socket通信,完成读取服务端的二进制数据读取,并将数据显示在textview控件上,数据全为整型 解决方案 之前接触一些,但不是我我写的.JNI中C读取,生成Native方法.上层调用 解决方案二: 底层c来封装so文件调用socket API.上面Java调用so 解决方案三: ....java自己有socket啊,ls各位回答的什么意思.... 简单的socket网上教

Android蓝牙开发,与HC-06单片机通信,

问题描述 Android蓝牙开发,与HC-06单片机通信, 单片机发,android端收,android端代码怎么搜索蓝牙设备并连接成功呢? 解决方案 最简单的方法:先到android store上下载一个app做测试,比如'spp蓝牙'这个APP上面有搜索,连接的步骤你的源码来仿照它的写 解决方案二: android 与 蓝牙模块 hc06通信app 开发要点安卓手机通过蓝牙与单片机通信Android 通信--蓝牙 解决方案三: package kankan.idea.bluetoolswit

android 串口通信读取数据

问题描述 android 串口通信读取数据 串口读数据时,size= mInputStream.read(buffer),执行到这一步就不往下执行了,求解! 解决方案 android串口通信Android串口通信android串口通信 解决方案二: 亲,您这个问题解决了吗??我现在也是卡在这块了,,您有办法吗??求告诉一下,,万分感谢 解决方案三: 亲,我的是线程阻塞了,

c#上位机与单片机通信,上位机接收不到单片机返回的数据

问题描述 c#上位机与单片机通信,上位机接收不到单片机返回的数据 我遇到的问题是: 1上位机给单片机发送数据,单片机能接收到,但是单片机返回的数据上位机收不到 2我不用单片机,直接把数据线上的TX.RX短接,再用上位机发送数据,这时 上位机显示区就能显示上位机发送的数据: 3我用串口调试助手调试单片机程序,调试助手能正常接收单片机返回的数据: 以上3个问题,很是矛盾,不知道哪里出问题了,请高手帮助一下! 解决方案 asc码接收,十六进制接收不行,上位机编码 解决方案二: 曾经写过的一个,接收函数

Android socket通信,数据读取。

问题描述 Android socket通信,数据读取. public class ChatRoom extends ActionBarActivity { protected TextView tv_chat_show; protected EditText ed_chat_input; protected Button btn_send; protected ActionBarActivity that; protected String receiverMsg; protected Stri

android 一些数据转换方法

android 一些数据转换方法 package com.ai9475.util; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.PixelFormat