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

随机推荐

  1. Android获取与设置系统环境变量的方法指南

    前言 在Android源码的分析过程中经常会看到System.getenv(“xxx”)和getenv(“xxx”)以及Os.getenv(“xxx”)获取Android系统的环境变量值,本篇的重点不是分析代码的调用逻辑,而是讲解怎么在A...

  2. Android Activity与Fragment实现底部导航器

    单Activity多Fragment实现底部导航器 最近由于Android基础知识讲解需要,采用单Activity多Fragment实现类似QQ底部导航器示例,这种开发模式广泛应用于App开发,比如QQ,微信,新浪等,关于Android底...

  3. Android ListView与RecycleView的对比使用解析

    ListView,就如其名,是用来显示列表的一种View,而RecycleView,是其的加强版,今天带来的是这两个几乎具有相同的功能的对比使用 先从ListView说起吧 ListView: 1.在布局文件中使用ListView,并为其...

  4. android studio与Java服务器之间的通信。问题GRPC

    我需要设置一个android工作室应用程序和java服务器之间的通信,我尝试了XMLRPC,但它不起作用,我正在尝试GRPC目前,但不知道如何从android工作室的proto文件生成代码。这是我在服务器端的代码,public class ...

  5. 详解android与百度echarts项目整合方法

    百度echarts是一个很不错的图表项目,效果很绚丽。 用起来也不知很繁琐。 这里主要说在android项目中的整合。 1、项目整合,这个地方我是一个已经在使用的项目中整合的例子。 用的就不是android studio而是eclips...

  6. 详解android与服务端交互的两种方式

    做Android开发的程序员必须知道android客户端应该如何与服务端进行交互,这里主要介绍的是使用json数据进行交互。服务端从数据库查出数据并以json字符串的格式或者map集合的格式返回到客户端,客户端进行解析并输出到手机屏幕上。...

  7. Android App 与 U 盘通信示例详解

    前言 对于 U 盘的了解,相信大多数人应该只停留在跟 U 盘跟电脑通信的阶段,其实现在通过OTG 线就可以实现手机跟 U 盘之间的数据操作,不仅可以将 U 盘中的文件读取到手机中来,还能将手机中的文件导出到 U 盘中,从而实现手机与 U ...

  8. Android Activity与Intent详解及示例代码

    Android有三个基础组件Activity,Service和BroadcastReceiver,他们都是依赖Intent来启动。本文介绍的是Activity的生命周期以及针对Activity的Intent使用。 之前的例子一直都是使用...

  9. Android Intent与IntentFilter案例详解

    1. 前言 在Android中有四大组件,这些组件中有三个组件与Intent相关,可见Intent在Android整个生态中的地位高度。Intent是信息的载体,用它可以去请求组件做相应的操作,但是相对于这个功能,Intent本身的...

  10. Android Fragment与Activity之间的相互通信实例代码

    Android Fragment与Activity之间的相互通信 前言 自从Android3.0引入Fragment之后,主要是为了支持动态灵活的界面设计和屏幕的适配问题。Fragmenty不能单独存在,必须依赖Activity作为视图...