如何获取一个数的反码

  项目需求:和蓝牙设备通信。

  由于之前没有搞过这方面的功能,所以很是被动;中间经过各种的查资料,问蓝牙设备开发人员等等等等,终于把接受数据的功能实现了;但是给蓝牙发送数据的地方却卡主了。由于蓝牙设备开发人员在接收到的数据的地方进行了样式规范,所以才有了标题的需求:如何获取一个数的反码。

  蓝牙需要接受一个数的十六进制以及这个数的十六进制反码,我的实现方法是:先把这个数转换成十六进制,这样就实现了第一个要求;在获取反码的地方出了点问题,我之前那的理解是反码就是这个数的二进制中0变成1,1变成0的这种。后面发现并不对,正常情况下应该是这个数转成十六进制之后的数的反码。写到这里主要的功能是已经实现了

  但是在这里说一个方便的方法,该方法只在十六进制中试验过,不过个人感觉在其他进制中应该也是适用的:原始数的十六进制+反码是刚好等于15的。举例说明一下:原始数是82,那么他的十六进制就是52,而反码应该是AD。重点来了:5+A = 15   2+D=15    按照这种方法取反码就简单的多了吧

  在这里贴上获取反码的方法:

//获取十六进制反码
public static String getComplement(String txt) {
    String i;
    boolean isNumber = getIsNumber(txt);
    int a;
    if (isNumber) {
        a = 15 - Integer.parseInt(txt);
    }else{
        a = 15 - formatting(txt);
    }


    if (a == 10) {
        i = "A";
    } else if (a == 11) {
        i = "B";
    } else if (a == 12) {
        i = "C";
    } else if (a == 13) {
        i = "D";
    } else if (a == 14) {
        i = "E";
    } else if (a == 15) {
        i = "F";
    } else {
        i = a + "";
    }

    return i;
}
可能还有不足之处,希望大家指教,相互学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值