Android与单片机通信常用数据转换方法总结

Android与单片机通信常用数据转换方法总结,第1张

概述Android与单片机通信常用数据转换方法  1. 将GB2312转化为中文,如BAFAC2DCB2B7→胡萝卜,两个字节合成一个文字

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,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与单片机通信常用数据转换方法总结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1148259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存