¿Cuál es la mejor manera 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).¿Cuál es la mejor forma de convertir TBytes (UTF-16) en una cadena?
Como TBytes no almacena un terminador nulo, lo siguiente solo funcionará si la matriz tiene un # 0 en la memoria adyacente.
MyString := string(myBytes);
Si no es así, el resultado cadena tendrá datos aleatorios al final (también probablemente podría causar una violación de lectura dependiendo de cuánto tiempo se 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.
Gracias Bruce, revisé mi pregunta original, ya que no era lo suficientemente específica. La matriz TBytes está codificada como datos utf16, por lo que ToBytes no funciona. –
Dulce. Tan simple como 8 caracteres: StringOf :) – Ampere