utf8 qué que juego endian codepage caracteres big archivo 32le delphi unicode

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 );