delphi - qué - utf 32le
¿Cuál es la mejor forma de convertir TBytes(UTF-16) en una cadena? (3)
¿Cuál es la mejor forma de convertir una matriz de bytes declarados como TBytes a una cadena Unicode en Delphi 2009? En mi caso particular, la matriz TBytes ya tiene datos codificados en UTF-16 (2 bytes para cada char).
Como TBytes no almacena un terminador nulo, lo siguiente solo funcionará si la matriz tiene un # 0 en la memoria adyacente.
MyString := string( myBytes );
De lo contrario, el resultado de la cadena tendrá datos aleatorios al final (probablemente también podría causar una violación de lectura dependiendo de cuánto tiempo tardó en encontrarse con un # 0 en la memoria).
Si uso la función ToBytes, devuelve ''t'' # 0''e ''# 0''s'' # 0''t ''# 0, que no es lo que quiero.
Si sus TBytes contienen caracteres UTF-16, mire WideStringOf y WideBytesOf.
StringOf convierte TBytes en UnicodeString. BytesOf convierte un UnicodeString en TBytes.
Terminé usando
TEncoding.Unicode.GetString( MyByteArray );