2012-02-08 55 views
1

我有一个数组完整的NSString的十六进制和什么从他们创建一个字符数组。我不确定如何做到这一点。转换NSString为字符数组

所以我有一个数组

NSArray *myArray = [NSArray arrayWithObjects:@"0xAA", @"0xBB", @"0xCC", nil]; 

从这个我想创造交流字符数组,类似这样的

const unsigned char testing[] = { 0xAA, 0xBB, 0xCC }; 

任何意见的东西,将不胜感激

感谢

回答

3

你可以采取NSScaner方法:

NSArray *myArray = 
    [NSArray arrayWithObjects:@"0xAA", @"0xBB", @"0xCC", nil]; 
int size = [myArray count]; 
unsigned char testing[size]; 

unsigned holder; 

for (int i = 0; i < size; ++i) { 
    [[NSScanner scannerWithString:[myArray objectAtIndex:i]] 
         scanHexInt:&holder]; 
    testing[i] = holder; /* or check for errors before assigning */ 
} 

或C-办法:

for (int i = 0; i < size; ++i) { 
    sscanf([[myArray objectAtIndex:i] UTF8String], "%x", &holder); 
    testing[i] = holder; /* same thing */ 
} 
+0

对于Obj-C方法,Xcode声明你不能初始化一个pa在scanHexInt:testing + i行中,无符号整型*的值为unsigned char * *对不起,C编程新手 – 2012-02-08 14:20:00

+0

哦,当然可以。对不起,我只是在没有太多想法的情况下输入代码。我用更安全的方式更新了答案。 – sidyll 2012-02-08 14:40:46

+0

谢谢!像魅力一样工作。我已经接受你的回答:) – 2012-02-08 14:44:57

3

使用char测试[]你定义了一个char数组。所以只需要将一个字符串解析成该数组。你必须定义

const unsigned char testing[][]; 

,并在循环使用此填充:

NSString *s = @"Some string"; 
const char *c = [s UTF8String];