2017-06-20 87 views
1

在iOS應用程序中,我使用了C編寫的第三方SDK。 作爲SDK方法調用的結果,我收到一個unsigned char數組(參見下面的示例)。將C無符號字符數組與中間字符轉換爲Objective-C NSString

我需要將此數組轉換爲Objective-C字符串(NSString)以保存它,並稍後將其轉換回C以將其作爲參數傳遞給另一個SDK方法。


我見過多種方式將C字符串轉換爲Objective-C。

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Õªö" 
... 

但是其中沒有一個似乎允許\0(空終止字符)在中間(參見[29]在下面的示例)。


實施例無符號字符陣列響應:

{ 
    [0] = '8' 
    [1] = '\b' 
    [2] = '\x01' 
    [3] = 'o' 
    [4] = '\x01' 
    [5] = '\x03' 
    [6] = 'F' 
    [7] = 'D' 
    [8] = 'O' 
    [9] = '\x02' 
    [10] = '\x10' 
    [11] = '\x0e' 
    [12] = '{' 
    [13] = '\x8d' 
    [14] = 'c' 
    [15] = '.' 
    [16] = '\x19' 
    [17] = '"' 
    [18] = 'r' 
    [19] = '\xe4' 
    [20] = 'g' 
    [21] = '\x18' 
    [22] = '\xd5' 
    [23] = '\xaa' 
    [24] = '\xf6' 
    [25] = '\x95' 
    [26] = '\x18' 
    [27] = '\x03' 
    [28] = '\x01' 
    [29] = '\0' 
    [30] = '\x04' 
    [31] = '\x01' 
    [32] = '\x05' 
    [33] = '\x05' 
    [34] = '\x01' 
    [35] = '\x05' 
    [36] = '\x06' 
    [37] = '\x01' 
    [38] = '\x01' 
    ... 
} 

如何可以由C轉換爲Objective-C和然後返回從目標C至C?

+0

https://stackoverflow.com/questions/3949628/convert-nsdata-to-nsstring-and-ignore-null-bytes?但是你會失去'byte [29]'有'\ 0'這個事實(如果你想把它轉換回來),那麼只需要保存bytes數組呢? – Larme

+0

我看到其他解決方案,如https://stackoverflow.com/a/6093939/1197572用'\\ 0'替換'\ 0'。 – saeros

+4

這個'unsigned char'數組根本不是一個字符串。您應該像處理void *一樣處理它,並使用NSData來存儲這些參數。 – toma

回答

1

這個unsigned char數組根本不是一個字符串。您應該像處理它void *一樣處理它,並使用NSData來存儲這些參數。

相關問題