[英]Converting a octal String to Decimal in Objective-C?
我试图在Objective-C中进行Binary,Octal,Decimal和Hexadecimal之间的转换。 我在将Octal转换为Decimal时遇到了问题。
我尝试过以下方法:
NSString *decString = [NSString stringWithFormat:@"%d", 077];
它运行正常,按预期返回63,但我的Octal值是NSString。 我怎么能告诉电脑它是八进制的呢?
我知道有一个名为“scanHexInt:”的方法,我用它将十六进制转换为十进制,但似乎没有scanOctInt ......
任何帮助,将不胜感激!
最干净的解决方案可能是:
long result = strtol(input.UTF8String, NULL, 8);
要么
long long result = strtoll(input.UTF8String, NULL, 8);
在NSString上定义一个类别(把它放在任何源代码模块之上或者放在一个新的.m / .h文件对中,@ interface进入.h,@ implementation进入.m):
@interface NSString (NSStringWithOctal)
-(int)octalIntValue;
@end
@implementation NSString (NSStringWithOctal)
-(int)octalIntValue
{
int iResult = 0, iBase = 1;
char c;
for(int i=(int)[self length]-1; i>=0; i--)
{
c = [self characterAtIndex:i];
if((c<'0')||(c>'7')) return 0;
iResult += (c - '0') * iBase;
iBase *= 8;
}
return iResult;
}
@end
像这样使用它:
NSString *s = @"77";
int i = [s octalIntValue];
NSLog(@"%d", i);
该方法返回一个表示字符串中八进制值的整数。 如果字符串不是八进制数,则返回0。 允许前导零,但不是必需的。
或者,如果要下拉到C,可以使用sscanf
int oct;
sscanf( [yourString UTF8String], "%o", &oct );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.