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?
https://stackoverflow.com/questions/3949628/convert-nsdata-to-nsstring-and-ignore-null-bytes?但是你會失去'byte [29]'有'\ 0'這個事實(如果你想把它轉換回來),那麼只需要保存bytes數組呢? – Larme
我看到其他解決方案,如https://stackoverflow.com/a/6093939/1197572用'\\ 0'替換'\ 0'。 – saeros
這個'unsigned char'數組根本不是一個字符串。您應該像處理void *一樣處理它,並使用NSData來存儲這些參數。 – toma