iOS和蓝牙交互的一些进制转换

因为项目是基于蓝牙的硬件设备,所以会有一些指令的编写是和16进制相关的,所以这里就总结一些方便快捷的16进制和10进制相互转换的方式。

1、10进制转换16进制

10进制转换16进制相当简单,其实不用去专门写10 = A, 11 = B...这种,只需要:


NSString *hexString = [[NSString alloc] initWithFormat:@"%X", transformStr]];

NSLog(@"%@", hexString);

是不是非常方便,%x和%X就是以16进制输出。

2、16进制转换10进制

16进制转换10的方式其实网上也蛮多的,我这里举例两种比较简单方便代码量少的

第1种:

用NSScanner 扫描字符串


// 16进制转换10进制
- (NSString *)hexTransformToDecimal:(NSString *)hexString
{
    unsigned int anInt;
    NSScanner *scanner = [[NSScanner alloc] initWithString:hexString];
    [scanner scanHexInt:&anInt];
    NSNumber *number = [NSNumber numberWithInt:anInt];
    NSLog(@"十进制数为:%@", number.stringValue);
    return number.stringValue;
}

第2种

用C语言的strtol函数, 代码量更少


// 16进制转10进制
- (NSString *)hexTransformToDecimal:(NSString *)hexString
{
    constchar*str = [hexStringUTF8String];
    long number = strtol(str, 0, 16);
    NSLog(@"十进制数为:%ld", number);
    return [NSString stringWithFormat:@"%ld", number];
}

可以将方法用category进行管理,这样更方便使用~

你可能感兴趣的:(iOS和蓝牙交互的一些进制转换)