将C unsigned char数组转换为中间的null-terminated char到Objective-C NSString

时间:2017-06-20 14:11:14

标签: ios objective-c c null-terminated

在iOS应用中,我使用的是用C语言编写的第三方SDK。 作为SDK方法调用的结果,我收到一个builtin数组(参见下面的示例)。

我需要将此数组转换为Objective-C String(NSString)以保存它,然后将其转换回C以将其作为参数传递给另一个SDK方法。

我已经看到了将C字符串转换为Objective-C的多种方法。

__import__

但是它们似乎都没有在中间允许unsigned char(空终止字符)(参见下面示例中的[29])。

unsigned char数组响应示例:

NSString *example1 = [NSString stringWithFormat:@"%s", myArray]; // "8oFDO{c."rägÕªö"
NSString *example2 = [[NSString alloc] initWithBytes:myArray length:sizeof(myArray) encoding:NSASCIIStringEncoding]; // "8oFDO{c."rägÕªö"
...

如何从C转换为Objective-C,然后从Objective-C转换回C?

1 个答案:

答案 0 :(得分:1)

这个unsigned char数组根本不是一个字符串。您应该像处理void *一样处理它,并使用NSData来存储这些参数。