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 的字节长度是多少?的主要内容,如果未能解决你的问题,请参考以下文章

sql 查询 多少个字节长度 比如中 者返回2个字节,是哪个方法??

NSString 文本像素长度

TCP段头的最小长度是多少?

字符串长度适配

mysql varchar定义长度多少为好

iOS基础-NSString及NSMutableString剖析