Obtener una longitud calculada de una cadena Fundación Core dado una codificación
-
22-08-2019 - |
Pregunta
¿Hay una manera de conseguir la longitud en bytes de un CFString
dado una codificación de caracteres arbitraria? Parece posible porque el CFStringGetSmallestEncoding
función debe hacer algunos cálculos ya, pero no quiero utilizar la codificación más pequeña, quiero saber lo grande que una memoria intermedia que podría necesitar asignar si quiero los bytes de codificación UTF-8 o tal vez otro carácter de anchura variable de codificación.
¿Es posible? ¿O tengo que asignar el máximo posible de tamaño de búfer utilizando CFStringGetMaximumSizeForEncoding
?
Solución
¿Tiene Fundación disponibles? Si es así, usted podría emitir el CFStringRef a un NSString * y utilizar lengthOfBytesUsingEncoding:.
Tenga en cuenta sin embargo que CFStringGetMaximumSizeForEncoding es O (1), mientras que lengthOfBytesUsingEncoding: es O (n) de la longitud de la cadena (que está haciendo esencialmente la conversión de dos veces), por lo que aún puede ser mejor usar CFStringGetMaximumSizeForEncoding asignar un tampón.