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

9
在Delphi 2009中,将声明为TBytes的字节数组转换为Unicode字符串的最佳方法是什么?在我的特定情况下,TBytes数组已经具有UTF-16编码的数据(每个字符2个字节)。
由于TBytes不存储空终止符,如果数组恰好在相邻内存中具有#0,则以下内容将起作用。
MyString := string( myBytes );

如果不这样做,字符串结果将在末尾具有随机数据(根据遇到内存中的#0花费的时间长短,可能还会导致读取违规)。
如果我使用ToBytes函数,它会返回“t”#0“e”#0“s”#0“t”#0,这不是我想要的。
3个回答

18

我最终使用了

TEncoding.Unicode.GetString( MyByteArray );

12

StringOf 函数用于将 TBytes 转换为 UnicodeString。 BytesOf 函数用于将 UnicodeString 转换为 TBytes。


谢谢Bruce,我修改了我的原始问题,因为它不够具体。TBytes数组被编码为utf16数据,所以ToBytes方法不起作用。 - Jeremy Mullin
1
甜。只需8个字符就能简单实现:StringOf :) - Gabriel

4
如果您的TBytes包含UTF-16字符,请查看WideStringOf和WideBytesOf。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接