iOS开发之蓝牙——进制转换

积土成山,风雨兴焉;积水成渊,蛟龙生焉。

Bluetooth

前言

我做iOS蓝牙开发这方面也有近一年时间,从开始的一窍不通到现在能流畅使用蓝牙库,有自己的上线产品,一路走来,说实话路有点颠簸。最近有点闲了,就想整理一下自己的所学到的知识,写出来和大家分享一下,初学者参考,大神们指正。

刚接触蓝牙最让我头疼的部分——蓝牙数据类型转换

  • NSData 转换成 NSString
+ (NSString *)convertDataToHexStr:(NSData *)data {
    if (!data || [data length] == 0) {
        return @"";
    }
    NSMutableString *string = [[NSMutableString alloc] initWithCapacity:[data length]];
    [data enumerateByteRangesUsingBlock:^(const void *bytes, NSRange byteRange, BOOL *stop) {
        unsigned char *dataBytes = (unsigned char*)bytes;
        for (NSInteger i = 0; i < byteRange.length; i++) {
            NSString *hexStr = [NSString stringWithFormat:@"%x", (dataBytes[i]) & 0xff];
            if ([hexStr length] == 2) {
                [string appendString:hexStr];
            } else {
                [string appendFormat:@"0%@", hexStr];
            }
        }
    }];
    return string;
}
  • NSString 转换成 NSData
+ (NSData *)hexStrToBytes:(NSString *)str {
    NSMutableData *data = [NSMutableData data];
    int idx;
    for (idx = 0; idx + 2 <= str.length; idx += 2) {
        NSRange range = NSMakeRange(idx, 2);
        NSString *hexStr = [str substringWithRange:range];
        NSScanner *scanner = [NSScanner scannerWithString:hexStr];
        unsigned int intValue;
        [scanner scanHexInt:&intValue];
        [data appendBytes:&intValue length:1];
    }
    return data;
}
  • 十六进制字符串转成十进制整型
+ (NSInteger)convertHexStringToInteger:(NSString *)hex {
    NSString *tempStr = [NSString stringWithFormat:@"%lu",strtoul([hex UTF8String],0,16)];
    //转成数字
    int cycleNumber = [tempStr intValue];
    return cycleNumber;
}
  • 十进制整型转成十六进制字符串
+ (NSString *)hexStringWithDecimalism:(NSUInteger)originNum {
    char hexChar[6];
    //X 大写
    sprintf(hexChar, "%X", (int)originNum);
    return [NSString stringWithCString:hexChar encoding:NSUTF8StringEncoding];
}

后记

这些是我用到的基础,一些复杂的需要可以根据上面的方法变形来实现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容