我试图将8位二进制字符串的最后四位数字分开。为了做到这一点,我试图创建一个新的字符串和appendFormat原始字符串的最后四位数字。唯一的问题是这个新字符串总是返回NULL,当我知道它不应该是。任何人都知道我做错了什么?
NSMutableString *str = @"01110001;
unsigned short zero = [str characterAtIndex:0]-48;
unsigned short one = [str characterAtIndex:1]-48;
unsigned short two = [str characterAtIndex:2]-48;
unsigned short three = [str characterAtIndex:3]-48;
unsigned short four = [str characterAtIndex:4]-48;
unsigned short five = [str characterAtIndex:5]-48;
unsigned short six = [str characterAtIndex:6]-48;
unsigned short seven = [str characterAtIndex:7]-48;
NSMutableString *newString;
[newString appendFormat:@"%d%d%d%d",four, five, six, seven];
NSLog(@"NEWSTRING:%@", newString);
或者,有没有更好的方法来获得原始字符串的最后四位数?
答案 0 :(得分:2)
使用NSString
:
NSString *str = @"01110001";
NSString *lastFour = [str substringFromIndex:str.length - 4];
此代码假定str
至少包含4个字符。无论字符串有多长,它都会给你最后四个。
更新以解释原始问题。
由于您从未初始化newString
,因此您获得了nil。它是nil
,您在appendFormat:
值上调用nil
,该值无效。
如果你这样做会有用:
NSMutableString *newString = [NSMutableString string];
但是,你的字符串都不需要是可变的。
你应该做的:
NSString *newString = [NSString stringWithFormat:@"%d%d%d%d",four, five, six, seven];
当然,正如我的答案的开头所示,无论如何都不需要这样做。