2012-06-18 68 views
0

如何將「initWithBytes」NSString轉換爲無符號字符*?如何將「initWithBytes」NSString轉換爲無符號字符*

這裏的的NSString如何產生

NSString *byte = [[[NSString alloc] initWithBytes:inputbytes length:inputlength encoding:NSASCIIStringEncoding] autorelease]; 

其中包含不應該在比特電平來改變字節的數據(將BASE64轉換的輸入端)

在字節中的數據爲0x01 0×00 0×01 ,3個字節

,我想將其轉換成一個無符號的char *

我應該怎麼辦呢?

感謝

回答

2

一般來說,你應該NSString直接合作,而不是試圖移動進出的Objective-C的。但有理由下降到C(例如,使用C-only API),所以我會幽默你。 ;)

如果你只是需要將數據傳遞到另一個函數,你可以這樣做:如果您需要修改C字符串(即讓非const

const unsigned char *cString = (const unsigned char *)[byte cStringUsingEncoding: NSASCIIStringEncoding]; 

,您需要做一個副本:

const unsigned char *cString = (const unsigned char *)strdup([byte cStringUsingEncoding: NSASCIIStringEncoding]); 

然後free()它,當你用它做:

free(cString); 

請注意,這不會修改原始C字符串或您從其製作的NSString。如果您需要NSString您可以修改,請使用NSMutableString

+0

謝謝你的回答。我做了「有」將它們轉換爲C字符串,因爲我使用C庫,並且我熟悉C.我嘗試了兩種方法,但我得到的字符串似乎是空的,並且strlen的返回值是1.我想知道是否有關於「initWithBytes:inputbytes」的事情?謝謝 –

+0

您正在使用的字符串可能不是純粹的ASCII。 UTF-8編碼是否工作? –

+0

我發現字符串被成功複製(通過訪問字符串[]),但是strlen函數不能返回正確的值。謝謝! –