将两位十六进制数转换为整数的最佳方法

时间:2018-08-20 20:58:25

标签: objective-c nsscanner

我想将两个十六进制数转换为整数,但遇到一些困难。格式为“ #FF”,我想将其转换为255或“#00”并转换为0。但是,当我尝试以下操作时:

unsigned alphaColor = 0;
[[NSScanner scannerWithString:alphaString] scanHexInt:&alphaColor];
alphaVal = alphaColor / 255.0;

似乎不起作用,因为alphaColor为零。 有什么想法可以转换两位十六进制吗?

1 个答案:

答案 0 :(得分:1)

scanHexInt不接受#。它可选地允许前导0x0x,但不允许#。您需要先阅读#

NSScanner *scanner = [NSScanner scannerWithString:alphaString];
unsigned alphaColor = 0;
if ([scanner scanString:@"#" intoString:nil] && [scanner scanHexInt:&alphaColor]) {
    alphaVal = alphaColor / 255.0;
}