获取给定编码的 Core Foundation 字符串的计算长度
-
22-08-2019 - |
题
有没有办法获得a的长度(以字节为单位) CFString
给定任意字符编码?这似乎是可能的,因为该功能 CFStringGetSmallestEncoding
必须已经做一些计算,但我不想使用最小的编码,我想知道如果我想要 UTF-8 编码或其他可变宽度字符编码的字节,我可能需要分配多大的缓冲区。
是否可以?或者我是否需要使用分配最大可能的缓冲区大小 CFStringGetMaximumSizeForEncoding
?
解决方案
您有可用的基金会吗?如果是这样,您可以将 CFStringRef 转换为 NSString* 并使用 lengthOfBytesUsingEncoding:。
请记住,CFStringGetMaximumSizeForEncoding 的复杂度为 O(1),而 lengthOfBytesUsingEncoding:字符串的长度为 O(n) (您实际上执行了两次转换),因此您最好使用 CFStringGetMaximumSizeForEncoding 来分配缓冲区。
不隶属于 StackOverflow