【问题标题】:What is the best way to convert TBytes (UTF-16) to a string?将 TBytes (UTF-16) 转换为字符串的最佳方法是什么?
【发布时间】:2008-11-03 20:28:42
【问题描述】:

在 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


    【解决方案1】:

    我最终使用了

    TEncoding.Unicode.GetString( MyByteArray );
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢布鲁斯,我修改了我原来的问题,因为它不够具体。 TBytes 数组被编码为 utf16 数据,所以 ToBytes 不起作用。
      • 甜蜜。简单到 8 个字符:StringOf :)
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-30
        • 1970-01-01
        • 2011-08-11
        • 2013-06-23
        相关资源
        最近更新 更多