2012-02-08 91 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];