Как лучше всего преобразовать массив байтов, объявленный как TBytes, в строку Unicode в Delphi 2009? В моем конкретном случае массив TBytes уже содержит данные в кодировке UTF-16 (2 байта для каждого символа).
Поскольку TBytes не хранит нулевой терминатор, следующее будет работать, только если массив имеет # 0 в памяти рядом с ним.
MyString := string( myBytes );
В противном случае результат строки будет иметь случайные данные в конце (это также может вызвать нарушение чтения в зависимости от того, сколько времени потребовалось, чтобы встретить # 0 в памяти).
Если я использую функцию ToBytes, она возвращает 't' # 0'e '# 0's' # 0't '# 0, чего я не хочу.





Если ваш TBytes содержит символы UTF-16, посмотрите WideStringOf и WideBytesOf.
В итоге я использовал
TEncoding.Unicode.GetString( MyByteArray );
Спасибо, Брюс, я изменил свой первоначальный вопрос, поскольку он был недостаточно конкретным. Массив TBytes кодируется как данные utf16, поэтому ToBytes не работает.