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 常用数据适配器SimpleAdapter
在<Android 常用数据适配器ArrayAdapter>中介绍了ArrayAdapter数据适配器.但是存在一个缺陷,那就是条目的图标都固定相同,要显示每个条目的图标都不相同,那么使用 ...
- Android 常用数据适配器ArrayAdapter
接着上篇文章<Android 采用Layout Inflater创建一个View对象>,本文采用常用数据适配器ArrayAdapter 新建项目后,在layout文件夹下新建list_it ...
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...
- android 一些数据转换方法
android 一些数据转换方法 package com.ai9475.util; import android.content.Context; import android.content.res ...
- vue仓库、组件间通信、前后台数据交互、前端储存数据大汇总
目录 路由重定向 仓库介绍 vuex插件:可以完成任意组件间信息交互(移动端) 前端存储数据大汇总 前后台交互方式(重点) 前后台数据交互 axios插件:完成前后台ajax交互的 同源策略 - 前后 ...
- Android利用Fiddler进行网络数据抓包,手机抓包工具汇总
Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...
- Android利用Fiddler进行网络数据抓包,手机抓包工具汇总,使用mono运行filddler
Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...
- Android开发周报:Android L默认加密用户数据
Android开发周报:Android L默认加密用户数据 新闻 <iCloud前车之鉴,Android L默认开启加密功能>:iCloud 艳照风波再起,第二波女星照片流出,大量女星的裸 ...
- Android进阶(二十)AndroidAPP开发问题汇总(四)
· Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...
随机推荐
- extends CakeRequest,重写is方法
背景:Cakephp开发环境版本是2.3.8,服务器的cakephp版本是2.3.5,测试好的代码上传到服务器上后发现总爆如下的警告: Warning (2): strtolower() expect ...
- 基元用户模式构造--互锁构造 Interlocked 实现的异步web请求实例
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...
- MySQL5.6锁阻塞分析
日常维护中,经常会碰到线程被阻塞,导致数据库响应非常慢,下面就看看如何获取是哪个线程导致了阻塞的. blog地址:http://blog.csdn.net/hw_libo/article/detail ...
- Python通过Zabbix API获得数据
Zabbix API查询:https://www.zabbix.com/documentation/2.0/manual/appendix/api/api import json,urllib2 fr ...
- zabbix待完整
fad 下载zabbix3.4的配置文件 wget -O zabbix-3.4.2.tar.gz http://sourceforge.net/projects/zabbix/files/ZABBIX ...
- 一些安卓模拟器的IP问题和getOutputStream();关于connect();的函数异常的问题
ip问题 1.不能使用local host 和127.0.0.1作为本地服务器的地址,而网上无论10.0.0.2还是10.0.2.2的8080端口都无法访问.真正的地址应该在CMD 键入ipconfi ...
- 获取QQ头像接口
https://q4.qlogo.cn/g?b=qq&nk=QQ号码&s=140
- requirejs原理深究以及r.js和gulp的打包【转】
转自:http://blog.csdn.net/why_fly/article/details/75088378 requirejs原理 requirejs的用法和原理分析:https://githu ...
- NOIP模拟赛-2018.10.22
模拟赛 今天第一节课是历史,当然是不可能上的,一来到机房发现今天高二考试... 老师说以后可能还要给高一考...那还不如现在跟着做好了,毕竟在学长学姐中垫底显得没那么丢人 这套题风格挺奇怪的...为什 ...
- 网络嗅探与欺骗(第一二部分)非平台——P201421410029
中国人民公安大学 Chinese people’ public security university 网络对抗技术 实验报告 实验二 网络嗅探与欺骗 学生姓名 李政浩 年级 2014 区 ...