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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 单片机通信示例
实现单片机通信
单片机常用通信协议、android与单片机通信、单片机串口通信、单片机双机通信、单片机串口通信程序,以便于您获取更多的相关知识。

时间: 2016-09-09

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

Android实现TCP客户端接收数据的方法_Android

本文实例讲述了Android实现TCP客户端接收数据的方法.分享给大家供大家参考,具体如下: 配合log4net使用,用来接收调试信息.因此,此客户端只管通过TCP接收字符串数据,然后显示在界面上. 接收TCP数据 try { Socket s = new Socket("192.168.1.5", 8240); InputStream inputStream = s.getInputStream(); DataInputStream input = new DataInputStre

Android实现滑动加载数据的方法_Android

本文实例讲述了Android实现滑动加载数据的方法.分享给大家供大家参考.具体实现方法如下: EndLessActivity.java如下: package com.ScrollListView; import Android.app.ListActivity; import Android.os.Bundle; import Android.view.Gravity; import Android.view.View; import Android.view.ViewGroup; import

Android编程解析Json格式数据的方法_Android

本文实例讲述了Android编程解析Json格式数据的方法.分享给大家供大家参考,具体如下: package com.practice.json; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.util.Log; public cla

详解Android Activity之间切换传递数据的方法_Android

前面照着android系统的裁剪图片的功能自己写了一个相似的工具.功能是大体上实现了,但留下了一个调用的问题:如何从我的程序调用这个裁剪工具,并且获得裁剪后的图片呢? 其实这个也很简单了,就是intent的基础用法. 先上个图(界面依旧没优化,难看就难看吧): 起始activity,打开图片选择窗口,随便选择一张图片 下面是跳转到裁剪界面 按下crop按钮,退出activity,回到原来界面,并显示裁剪后的图 流程就是这样,也算模拟了系统裁剪功能的整体过程.下面就是实现功能的关键代码和说明了.

Android开发中多进程共享数据简析_Android

 背景 最近在工作中遇到一个需求,需要在接收到推送的时候将推送获得的数据存起来,以供app启动时使用.我们会认为这不是So easy吗?只要把数据存到SharedPreferences中,然后让app打开同一个SharedPreferences读取数据就可以了.但是在实际的测试中,我们发现推送进程存入的数据,并不能在app进程中获得.所以这是为什么呢,也许聪明的读者从我们上面的陈述中已经发现了原因,因为我们有两个进程,推送进程负责将推送数据存入,而app进程负责读取,但是正是由于是两个进程,如果

Android 清除SharedPreferences 产生的数据(实例代码)_Android

复制代码 代码如下:  定义:        SharedPreferences preferences = null; SharedPreferences.Editor editor = null;   preferences = getSharedPreferences(TAG, Activity.MODE_PRIVATE);  editor = preferences.edit();在onstop里面保存播放位置 @Override protected void onStop() {  e

android不同activity之间共享数据解决方法_Android

最近做局域网socket连接问题,要在多个activity之间公用一个socket连接,就在网上搜了下资料,感觉还是application方法好用,帖出来分享下! Android中在不同Activity中传递变量,通常使用Intent中Bundle添加变量的操作方法. 保存参数时: 复制代码 代码如下: Intent intent = new Intent(); intent.setClass(A.this, B.class); Bundle bundle = new Bundle(); bun

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

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