gpt4 book ai didi

arrays - 如何访问像字节数组这样的字符串?

转载 作者:行者123 更新时间:2023-12-03 19:07:52 26 4
gpt4 key购买 nike

我想执行以下操作,但出现“访问冲突”错误。

type Bin = array of byte;

var s:string;

begin
s:='some string';
Bin(s)[3]:=ord('X');
caption:=s;
end;

为什么这不起作用?

最佳答案

这不起作用,因为 AnsiString和字节的动态数组是不兼容的类型。您的 Actor 阵容无效,任何事情都可能发生。

事实证明,您的字符串是文字。编译器通过将字符串放入只读内存来处理这个问题。因此,当您在背后进行访问时会发生访问冲突。

解决方案很简单。使用 []直接在字符串上的索引运算符:

s[i] := ...;

当您这样做时,编译器知道该字符串是只读的,并将其复制到可写内存以允许您对其进行修改。

你说你不想用 ord()chr() .我不知道为什么。它们是正确使用的东西,而且它们甚至不会导致任何代码被发出。它们是变成无操作的内在函数。

您在评论中声明您正在编写加密算法。然后,这指出了您方法中的根本缺陷。加密算法对字节数组进行操作。不要将文本输入加密代码。使用一些定义明确的文本编码转换为字节数组。然后对字节数组进行操作。并且不要重新发明轮子。使用现有的加密库。

关于arrays - 如何访问像字节数组这样的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192793/

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