热门标签 | HotTags
当前位置:  开发笔记 > 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 

  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 

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


推荐阅读
  • 获取年月日,之前的日期不能选择日历cCalendar.getInstance();获取系统的工具类【可以获取时间】DatePickerDialogdate ... [详细]
  • 本文介绍如何在已拥有签名密钥的情况下为 Ionic 3 开发的 Android 应用程序添加签名。如果您尚未创建签名文件,建议先参考相关指南完成该步骤。 ... [详细]
  • 深入解析 Android 中的 ActivityGroup 实现
    本文详细探讨了如何在 Android 应用中使用 ActivityGroup 来实现类似微博客户端主界面的效果,并分析了 TabActivity 的局限性,推荐使用更为灵活的 ActivityGroup 方案。 ... [详细]
  • 1.选择一个翻译页面,我选择的是有道词典(http:dict.youdao.com)2.随便输入一个英语单词进行翻译,然后查看源文件,找到 ... [详细]
  • Sass 是一种 CSS 的预处理器,通过使用变量、嵌套、继承等高级功能,使得 CSS 的编写更加灵活和高效。本文将介绍 Sass 的基本语法及其安装使用方法。 ... [详细]
  • TunnelWarfareTimeLimit:1000MS MemoryLimit:131072KTotalSubmissions:7307 ... [详细]
  • 电子与正电子的相互作用
    本文探讨了电子与正电子之间的基本物理特性及其在现代物理学中的应用,包括它们的产生、湮灭过程以及在粒子加速器和宇宙射线中的表现。 ... [详细]
  • 本文介绍了EasyRTSPClient这一高效、稳定的RTSP客户端工具库,并详细阐述了其在与大华球机对接过程中遇到的预览问题及解决方法。 ... [详细]
  • Linux系统中高效解决高Buff/Cache占用问题
    本文详细探讨了在Linux系统中遇到的高Buff/Cache占用问题及其解决方案,提供了手动清除与定时任务自动化处理的方法。 ... [详细]
  • 查找数组中的重复元素
    问题描述:给定一个长度为n的数组,其中所有元素值位于0至n-1之间。数组中存在一些重复的数字,但具体哪些数字重复以及重复了多少次未知。本文章将探讨如何高效地找到数组中的任一重复数字。 ... [详细]
  • 本文详细探讨Java中Scanner类的两个重要方法——nextInt()和nextDouble(),并通过实例代码演示如何使用这些方法来处理用户输入。 ... [详细]
  • 本文介绍了FTP(文件传输协议)的基础知识,包括其定义、如何通过TCP建立控制和数据连接,以及主动模式与被动模式的区别。FTP作为一种重要的文件传输协议,在互联网数据交换中扮演着关键角色。 ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 近期在维护旧项目时遇到一个问题,在iOS8环境下,UILabel无法正常显示文本。通过深入分析,我们发现这一现象与UILabel的使用方式有关,特别是在嵌套UILabel的情况下。 ... [详细]
  • 华为交换机VLAN间通信配置指南
    本文详细介绍了如何在华为交换机上配置VLAN间的通信,包括VLAN的创建、VLAN接口的配置以及Trunk和Access端口的设置。通过具体步骤指导读者完成网络配置,确保不同VLAN之间的设备能够互相访问。 ... [详细]
author-avatar
丶原色调
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有