gpt4 book ai didi

vb.net - 大字符串永远持续到 'create'

转载 作者:行者123 更新时间:2023-12-02 21:56:25 25 4
gpt4 key购买 nike

我有一个程序,它将文件的字节加载到十六进制数组中,数组的最终长度是 16,777,216。我对数组进行了一些快速编辑,将其转换为一个巨大的字符串(长度为 33,554,432),以便可以将其转换回字节数组并写入一个新文件......好吧,我尝试这样做。

问题是,即使在等待几分钟(这是我期望的时间)之后,该字符串仍需要永远创建。我不认为有更好的方法来设置这个字符串,就像我目前拥有的那样,但是有没有办法通过保持十六进制数组不变来实现这一点?或者是否有一种简单的方法让我只修改我需要的偏移量而不重写整个文件?

 Dim tHex As String = ""
For i = 0 To gloBytes.Length - 1
tHex &= gloBytes(i)
Next

感谢您的帮助。

最佳答案

如果您要对字符串进行大量操作,则应该使用 StringBuilder而不是直接附加到String

由于 System.String 是不可变的,因此每次执行 tHex &= gloBytes(i) 时,您都会创建一个全新的字符串。这会导致大量的内存搅动,给GC带来很大的压力,进而导致整个事情变得非常慢。

另一方面,

StringBuilder 旨在允许您多次追加到“字符串”而不是搅动内存,因为它是一个可变类,专门设计用于允许执行多个操作,然后在最后转换为字符串(通过 ToString())。

使用StringBuilder的等效代码是:

Dim tmp as New StringBuilder(gloBytes.Length * 2)
For i = 0 To gloBytes.Length - 1
tmp.Append(gloBytes(i))
Next
Dim tHex As String = tmp.ToString()

关于vb.net - 大字符串永远持续到 'create',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17704419/

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