gpt4 book ai didi

delphi - 字符串到字节 [delphi]

转载 作者:行者123 更新时间:2023-12-03 15:49:02 27 4
gpt4 key购买 nike

我需要将数据存储到内存中。我的数据类型数据是字符串。我想尽量减少内存使用。我想我必须将字符串更改为字节。我对吗?如果我将字符串转换为字节,这意味着我必须将字符串转换为TMemoryStream?

最佳答案

如果你真的想转换它,那么这段代码就能完成

var
BinarySize: Integer;
InputString: string;
StringAsBytes: array of Byte;
begin
BinarySize := (Length(InputString) + 1) * SizeOf(Char);
SetLength(StringAsBytes, BinarySize);
Move(InputString[1], StringAsBytes[0], BinarySize);

但正如已经说过的,这不会节省你的内存。使用的量实际上是相同的。仅凭这一点你将一无所获。如果您有很多字符串,请采取不同的方法。就像这个选择列表中的一些内容一样:

  1. 使用字典并且每个相同的字符串仅存储一次
  2. 仅在内存中保存所有字符串的一部分。某种缓存。将其他内容放在硬盘上并使用流来加载它们
  3. 如果您有非常大的字符串,请考虑对其进行压缩。
  4. 如果您正在从文件中读取并且目标是二进制数据,请跳过中间的字符串。直接将源代码读入字节缓冲区。

如果不了解问题的更多信息,就很难提供进一步的帮助。

编辑:

如果您确实想要最小的内存占用并且可以接受稍低的速度(但仍然非常快),您可以使用 Suffix TrieB-Tree或事件一个简单的Binary Tree 。它们可以直接从硬盘驱动器工作,并且搜索速度非常快。如果您随后将数据子集缓存到 RAM,您将获得内存与速度方面的最佳解决方案。

无论如何,考虑到您声称拥有的数据量,似乎根本不需要内存优化。 22MB RAM 几乎不是问题,也不值得优化。

关于delphi - 字符串到字节 [delphi],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567775/

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