因为项目是基于蓝牙的硬件设备,所以会有一些指令的编写是和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进行管理,这样更方便使用~