我在iOS中有一个C char数组,如下所示:
static char aStr[MY_STRING_LENGTH] = {0xc0,0xa7,0x82};
当我在控制台上检查它时(p aStr),我得到的输出如下:
(char [MY_STRING_LENGTH]) $1 = "\xc0\xa7\x82"
这一切都很好。但是,我需要将原始字符串放在plist中,并将其作为配置数据读入。如果我在plist中输入我的条目作为NSString,我如何使用相同的值获取C char数组?到目前为止,我尝试的所有内容似乎都将十六进制值转换为其他内容。
我尝试过这样的事情:
NSString *newStr = [stringFromPlist UTF8String];
或者使用以下命令将NSString分解为数组:
NSArray *arr = [stringFromPlist componentsSeparatedByString:@","];
然后使用:
进行迭代和转换char newArr[MY_STRING_LENGTH];
for (int i = 0; i < MY_STRING_LENGTH; i++) {
newArr[i] = [arr[i] UTF8String];
}
但到目前为止似乎没有做我需要的事情。我一直在char数组中包含“0x”而不是“\ x”的值。
我的C排骨是FAR太生锈了,所以我希望有人可以指出我的错误。
干杯!
答案 0 :(得分:1)
我不知道是否有更优雅的解决方案,但您可以尝试:
NSString *stringFromPlist = @"0xc0,0xa7,0x82";
NSArray *arr = [stringFromPlist componentsSeparatedByString:@","];
char newArr[MY_STRING_LENGTH];
for (int i = 0; i < MY_STRING_LENGTH; i++) {
unsigned result = 0;
NSScanner *scanner = [NSScanner scannerWithString:arr[i]];
[scanner scanHexInt:&result];
newArr[i] = result;
}