zoukankan      html  css  js  c++  java
  • 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;
    }
    }

    请注明出处,此文档来自“善思善学”。
  • 相关阅读:
    大数据学习之sqoop框架 25
    大数据学习之Flume框架 24
    大数据学习之Hive UDF及优化23
    大数据学习之HiveDDM数据操作语言22
    大数据学习之Hive数据仓库DDL数据定义语言21
    【MacOs】 SecureCRT设置linux终端显示颜色
    【MacOs】 VMware Fusion的NAT端口映射+静态IP
    【nginx】测试服务器配置内网项目转发
    【Linux】SSH连接linux时,长时间不操作就断开的解决方案
    【PHP】简易系统环境控制
  • 原文地址:https://www.cnblogs.com/gtgl/p/4685121.html
Copyright © 2011-2022 走看看