android 进制转换方法
import android.util.Log;
public class CommandHelper {
public static String intToHexString(int value) {
String str = "";
if (value >= 0) {
str = Integer.toHexString(value);
} else {
str = Integer.toHexString((value & 0x000000FF) | 0xFFFFFF00)
.substring(6);
}
Log.d("SerialPort", "str = " + str);
if (str.length() == 1)
str = "0" + str;
str = str.toUpperCase();
return str;
}
public static String crcValue(String head, String id, String size,
String data) {
int value = 0;
if(null != size){
value = Integer.parseInt(head, 16) + Integer.parseInt(id, 16)
+ Integer.parseInt(size, 16) + dataValue(data);
} else {
value = Integer.parseInt(head, 16) + Integer.parseInt(id, 16)
+ dataValue(data);
}
Log.d("SerialPort", "value = " + value + " ~value = " + ~value);
return CommandHelper.intToHexString((~value) + 1);
}
public static int dataValue(String data) {
int result = 0;
for (int i = 0; i < data.length(); i = i + 2) {
result = result + Integer.parseInt(data.substring(i, i + 2), 16);
}
Log.d("SerialPort", "result = " + result);
return result;
}
public static String byteToHexString(byte[] data, int size) {
String receivedData = "";
for (int i = 0; i < size; i++) {
String hex = Integer.toHexString(data[i] & 0xff);
if (hex.length() == 1)
hex = '0' + hex;
receivedData += hex.toUpperCase();
}
return receivedData;
}
public static byte[] hexStringToBytes(String hexString) {
if (hexString == null || hexString.equals(""))
return null;
hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
// Log.d("AppsActivity", "d " + i + " = " + d[i]);
}
return d;
}
public static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
}
public static BaseCommand parseStringToBaseCommand(String data) {
if (null == data || data.length() < CommandUtil.COMMAND_LEAST_LENGTH) {
return null;
}
int length = data.length();
BaseCommand cmd = new BaseCommand();
cmd.setHead(CommandUtil.HEAD_READ);
cmd.setId(data.substring(2, 4));
cmd.setData(data.substring(6, length - 2));
cmd.setCrc(data.substring(length - 2, length));
return cmd;
}
}
android 进制转换方法的更多相关文章
- java中的进制转换方法
java中进行二进制,八进制,十六进制,十进制间进行相互转换 关键字: java 进制转换 十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer ...
- python内置的进制转换方法
python进制转换方法总结表: ↓ 2进制 8进制 10进制 16进制 2进制 - bin(int(x, 8)) bin(int(x, 10)) bin(int(x, 16)) 8进制 oct(in ...
- itoa函数的实现(不同进制)
2013-07-08 17:12:30 itoa函数相对于atoi函数,比较简单,还是要注意考虑的全面. 小结: 一下几点需要考虑: 对负数,要加上负号: 考虑不同进制,根据要求进行处理:对不同的进制 ...
- JDK中Integer类的进制转换实现
JDK中关于Integer类的进制转换方法很精巧,具体实现如下: final static char[] digits = { '0' , '1' , '2' , '3' , '4' , '5' , ...
- Android源码中的FLAG为何使用16进制
1.在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志,增加标志或者去除标志. 比如View.java中的 /** * This view does not want keyst ...
- android 蓝牙编程重点---如何发送和接收16进制数据
最近的android蓝牙开发项目也逐渐接近尾声,基本的功能都已经完成,只剩下界面的设计.现在真的是舒了一口气! 作为编程学习经验只有1年的菜鸟,这是我独自完成的商业性产品,而且还是涉及到与单片机蓝牙模 ...
- HexDump.java解析,android 16进制转换
HexDump.java解析android 16进制转换 package com.android.internal.util; public class HexDump { private final ...
- Android选择/拍照 剪裁 base64/16进制/byte上传图片+PHP接收图片
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/65633129认为博文实用,请点赞,请评论,请关注.谢谢! ~ 老规矩,先上GIF动态图 ...
- 为什么Android源码中都使用16进制进行状态管理?
前言 在Android源码中,对于"多状态"的管理总是通过16进制数字来表示,类似这种格式: //ViewGroup.java protected int mGroupFlags; ...
随机推荐
- CSS 中文字体 Unicode 编码表
CSS 中文字体 Unicode 编码表 在 CSS 中设置字体名称,直接写中文是可以的.但是在文件编码(GB2312.UTF-8 等)不匹配时会产生乱码的错误. 为此,在 CSS 直接使用 Unic ...
- POJ - 2912 Rochambeau (带权并查集+枚举)
题意:有N个人被分为了三组,其中有一个人是开了挂的.同组的人的关系是‘=’,不同组的人关系是‘<’或'>',但是开了挂的人可以给出自己和他人任意的关系.现在要根据M条关系找出这个开了挂的人 ...
- Linux 搭建 SVN
一.yum 安装 subversion yum -y install subversion 二.创建svn版本库所在路径(建议放在opt.usr.home下) mkdir -p /usr/local/ ...
- 数字图像处理,图像锐化算法的C++实现
http://blog.csdn.net/ebowtang/article/details/38961399 之前一段我们提到的算法都是和平滑有关, 经过平滑算法之后, 图像锐度降低, 降低到一定程度 ...
- 【Java Web】入门资源整理
[网站] 1.Java Web Application Tutorial for Beginners - JournalDev Google top1 除Java Web还有很多其他教程 2.Intr ...
- invalid derived query的解决办法
标签: eclipse / invalid / derived / 解决办法 / 校验功能 479 在Eclipse的运行过程中,突然有一个接口跳出如下错误: invalid derived quer ...
- NOIP 转圈游戏
描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推 ...
- uitableview 侧滑删除
https://github.com/MortimerGoro/MGSwipeTableCell
- [Android]android Service后台防杀
网上有很多办法,方法一:在JNI里面fork出子进程service在单独的进程中,在service中调用JNI的代码,然后fork出一个进程,然后让我们的service进程和fork出来的子进程一直运 ...
- Spring Boot 中修改端口和上下文路径
通过修改application.properties内容来改变访问的端口号和上下文路径(很简单!) spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.vi ...