将 TBytes (UTF-16) 转换为字符串的最佳方法是什么?

问题描述 投票:0回答:3

在 Delphi 2009 中将声明为 TBytes 的字节数组转换为 unicode 字符串的最佳方法是什么?在我的特定情况下,TBytes 数组已经具有 UTF-16 编码数据(每个字符 2 个字节)。

由于 TBytes 不存储空终止符,因此仅当数组恰好在与其相邻的内存中具有 #0 时,以下操作才有效。

MyString := string( myBytes );

如果不是,字符串结果末尾将包含随机数据(它也可能导致读取冲突,具体取决于在内存中遇到 #0 所需的时间)。

如果我使用ToBytes函数,它返回't'#0'e'#0's'#0't'#0,这不是我想要的。

delphi unicode
3个回答
20
投票

我最终使用了

TEncoding.Unicode.GetString( MyByteArray );

13
投票

StringOf 将 TByte 转换为 UnicodeString。 BytesOf 将 UnicodeString 转换为 TBytes。


4
投票

如果您的 TBytes 包含 UTF-16 字符,请查看 WideStringOfWideBytesOf

© www.soinside.com 2019 - 2024. All rights reserved.