【发布时间】:2013-12-09 03:32:52
【问题描述】:
我在 iOS 中有一个 C 字符数组,如下所示:
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];
}
但到目前为止,似乎没有什么能满足我的需要。我一直以包含“0x”而不是“\x”的char数组中的值结束。
我的 C 排骨太生锈了,所以我希望有人能指出我的错误。
干杯!
【问题讨论】:
-
我不完全理解你想要做什么。
stringFromPlist是什么?您想将aStr转换为NSString 吗?预期的结果是什么? (请注意,C0 A7 82 不是有效的 UTF-8 序列。) -
嗨 Martin,stringFromPlist 是从 plist 读取的 NSString。只是一个持有 NSString 实例的 var。我需要做的是获取 char[] 的 NSString 表示(即 {0xc0,0xa7,0x82})并能够从 NSString (即@“0xc0,0xa7,0x82”)中读取它,从而导致一个看起来像 \xc0\xa7\x82 的 char 数组。像泥一样清澈,对吧? :)
标签: objective-c c character-encoding nsstring character-arrays