2008-11-03 97 views
8

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

由于TB的不存储空终止,下面将仅当阵列恰好有#0在与其相邻的存储工作。

MyString := string(myBytes); 

如果没有,字符串结果将在年底有随机的数据(它也很可能会导致读取违反取决于它花费的时间遇到​​一个#0在内存中)。

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

回答

13

我结束了使用

TEncoding.Unicode.GetString(MyByteArray); 
8

StringOf转换TB的到的UnicodeString。 BytesOf将UnicodeString转换为TBytes。

+0

感谢布鲁斯,我修改了我原来的问题,因为它是不够具体。 TBytes数组编码为utf16数据,所以ToBytes不起作用。 – 2008-11-03 21:07:04

4

如果TB的包含UTF-16字符,看WideStringOf和WideBytesOf。

相关问题