gpt4 book ai didi

delphi - 将 TByteDynArray 转换为字符串

转载 作者:行者123 更新时间:2023-12-03 15:21:51 26 4
gpt4 key购买 nike

我正在使用网络服务,但遇到在文本内容中发现无效字符的问题。我在编码方面没有太多经验,因此我决定将数据作为 TByteDynArray 传递。这是我使用的代码 this answer .

class function StringHelper.StringToByteArray(value: string): TByteDynArray;
begin
SetLength(Result, Length(value) * SizeOf(Char));
if Length(value) > 0 then
begin
Move(value[1], Result[0], Length(value) * SizeOf(Char));
end;
end;

我成功地将 string 转换为 TByteDynArray,但我不知道如何将其从 TByteDynArray 转换回 字符串

最佳答案

通常最好使用 TEncoding 类来执行此类操作,而不是复制原始 UTF16 字节。您可能会借此机会更加精通文本编码。

所以,你可以使用

bytes := TEncoding.UTF8.GetBytes(str);

获取 UTF8 编码字节的文本。

反方向使用

str := TEncoding.UTF8.GetString(bytes);

我在这里选择了 UTF8 编码,但编码选择是你的。请参阅 TEncoding 的文档对于所有选项。

您问题中的代码隐式获取 UTF16 字节,因为这是 Delphi 中的原始字符串编码。我怀疑您使用该编码并不是出于任何特定的选择。但是,如果使用 UTF16 很重要,则更改上面的代码以使用 TEncoding.Unicode

但是,通常情况下,UTF8 是一个不错的选择,因为它往往具有空间效率。

关于delphi - 将 TByteDynArray 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55275565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com