NSString 的字节长度是多少?
Posted
技术标签:
【中文标题】NSString 的字节长度是多少?【英文标题】:What is the length in bytes of a NSString? 【发布时间】:2012-06-28 12:57:44 【问题描述】:如何获取NSString
的字节长度?如果myString
包含“hallo”,myString.length
将返回 5,但实际占用了多少字节?
【问题讨论】:
when 占用了多少实际字节?我希望你意识到字节长度取决于编码...... 似乎很清楚,问题是当它以 UTF16 的 NSString 的内部表示形式坐在那里时需要多少字节,所以答案是每个字符需要 2 个字节(最多部分——有些 unicode 字符需要超过 1 个 UTF16 代码点来表示。)。 【参考方案1】:NSString *test=@"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
NSUInteger bytes = [test lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%i bytes", bytes);
【讨论】:
这会将字符串从 UTF16 的内部表示转换为 UTF8,因此它不会告诉您 NSString 实际使用了多少内存。【参考方案2】:要获取字节,请使用
NSData *bytes = [string dataUsingEncoding:NSUTF8StringEncoding];
那你可以查看bytes.length
字节数取决于字符串编码
【讨论】:
【参考方案3】:嗯:
NSString* string= @"myString";
NSData* data=[string dataUsingEncoding:NSUTF8StringEncoding];
NSUInteger myLength = data.length;
【讨论】:
【参考方案4】:来自Apple documentation:
一个 NSString 对象编码一个符合 Unicode 的文本字符串, 表示为 UTF-16 代码单元的序列。所有长度,字符 索引和范围以 16 位平台字节序表示 值,索引值从 0 开始。
所以 NSString 使用的内存是每个字符 2 个字节加上对象本身使用的任何固定内存。
【讨论】:
以上是关于NSString 的字节长度是多少?的主要内容,如果未能解决你的问题,请参考以下文章