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进行管理,这样更方便使用~

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