美文网首页蓝牙
iOS开发之蓝牙——进制转换

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

作者: MQ_Twist | 来源:发表于2017-07-26 14:42 被阅读67次

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

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];
}

后记

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

相关文章

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

    积土成山,风雨兴焉;积水成渊,蛟龙生焉。 前言 我做iOS蓝牙开发这方面也有近一年时间,从开始的一窍不通到现在能流...

  • 我的第一个硬件联调app 资料

    iOS蓝牙中的进制转换,数据格式转换 最近在忙一个蓝牙项目,在处理蓝牙数据的时候,经常遇到进制之间的转换,蓝牙处理...

  • 打印机

    iOS开发之蓝牙/Socket链接小票打印机(一)iOS开发之蓝牙/Socket链接小票打印机(二) iOS so...

  • 5-16 iOS 十六进制转二进制

    项目中需要用到进制转换的知识, 参考了【iOS 开发】二进制、十进制、十六进制相互转换的方法本来很happy ,一...

  • 【Objective-c】_蓝牙开发

    ios蓝牙开发学习笔记(一)蓝牙概述 ios蓝牙开发学习笔记(二)central角色的实现 ios蓝牙开发学习笔记...

  • iOS蓝牙开发(四):BabyBluetooth蓝牙库介绍

    iOS蓝牙开发(四):BabyBluetooth蓝牙库介绍 iOS蓝牙开发(四):BabyBluetooth蓝牙库介绍

  • iOS开发蓝牙4.0初识

    iOS开发蓝牙4.0初识转载 2015-09-20 15:26:44标签:ios开发蓝牙ios开发蓝牙4.0ios...

  • 无标题文章

    在处理蓝牙数据的时候,经常遇到进制之间的转换,蓝牙处理的是16进制(NSData),而我们习惯的计数方式是10进制...

  • 无标题文章

    在处理蓝牙数据的时候,经常遇到进制之间的转换,蓝牙处理的是16进制(NSData),而我们习惯的计数方式是10进制...

  • iOS蓝牙中的进制转换

    最近在忙一个蓝牙项目,在处理蓝牙数据的时候,经常遇到进制之间的转换,蓝牙处理的是16进制(NSData),而我们习...

网友评论

    本文标题:iOS开发之蓝牙——进制转换

    本文链接:https://www.haomeiwen.com/subject/rtxokxtx.html