gpt4 book ai didi

objective-c - 来自 NSString 的 Char(十六进制表示)

转载 作者:行者123 更新时间:2023-11-30 15:41:36 25 4
gpt4 key购买 nike

我在 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 字符数组?到目前为止,我所尝试的一切似乎都将十六进制值转换为其他值。

我尝试过以下方法:

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 排版对于这个来说太生锈了,所以我希望有人能指出我的错误。

干杯!

最佳答案

我不知道是否有更优雅的解决方案,但你可以尝试:

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;
}

关于objective-c - 来自 NSString 的 Char(十六进制表示),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20462651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com