2012-06-28 92 views
18

如何獲取NSString的字節長度?如果myString包含「hallo」,則myString.length將返回5,但會佔用多少個實際字節?NSString的字節長度是多少?

+0

有多少個實際字節被** **當**?我希望你認識到,字節的長度取決於編碼... – borrrden

+0

似乎很明顯,問題是它需要多少字節,當它坐在NSString的內部表示中時,它是UTF16,所以答案就是它每個字符需要2個字節(大部分 - 有一些unicode字符需要超過1個UTF16碼位來表示)。 – Baxissimo

回答

49
NSString *[email protected]"ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
NSUInteger bytes = [test lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; 
NSLog(@"%i bytes", bytes); 
+0

這將字符串轉換爲UTF8的內部表示形式,因此它不會告訴您NSString實際使用了多少內存。 – Baxissimo

5

要獲取字節使用

NSData *bytes = [string dataUsingEncoding:NSUTF8StringEncoding]; 

然後你就可以檢查bytes.length

的字節數依賴於字符串編碼

5

好:

NSString* string= @"myString"; 
NSData* data=[string dataUsingEncoding:NSUTF8StringEncoding]; 
NSUInteger myLength = data.length; 
0

Apple documentation

一個NSString對象編碼兼容Unicode的文本串, 表示爲UTF-16代碼單元的序列。所有的長度,字符 索引和範圍在16位平臺端 值表示,用從0開始。

索引值因此,通過一個NSString所使用的存儲器是每個字符加任何2個字節固定內存由對象本身使用。

相關問題