如何快速将 byte[] 转换为字符串?
Posted
技术标签:
【中文标题】如何快速将 byte[] 转换为字符串?【英文标题】:How to fast convert byte[] to string? 【发布时间】:2014-04-16 15:57:51 【问题描述】:我需要在 C# 和 Unity 中将一个字节 [] 转换为字符串,而不会丢失很多每秒帧数。 我目前正在使用 WWW 类来获取文本文件,但是当我使用 WWW.text 时,由于文件太大并导致 FPS 下降。有什么方法可以逐步进行转换,而不会延迟太久。
WWW file = new WWW(path);
yield return file;
string text= file.text;
我用它来读取一个完整的文件(一个 .OBJ),我需要读取所有文本。行到行或所有文本到一个字符串后拆分。为了在不降低 FPS 的情况下阅读文本,我这样做了。
WWW file = new WWW(path);
yield return file;
string text= file.bytes;
如果文件太大,WWW.text,丢弃 FPS,那么我需要使用 WWW.bites。
在 Unity 中使用yield return null;
处理另一帧。
如果进程需要太多时间来执行,则丢弃 FPS(如果是 WWW.text);
【问题讨论】:
投票重新打开,因为看起来问题是关于将字节数组的一部分作为字符串而不是“如何将整个数组转换为字符串”... user3541917 - 请您澄清问题并显示你如何使用结果字符串。如果您需要将内容作为单个字符串,它确实是重复的问题,但如果您想使用部分字符串,它是不同的问题。应该重新措辞/再次询问,以显示您希望如何使用“增量转换”的结果。 我同意阿列克谢的观点。这不是一个直接的转换问题。相反,这是一个在不影响应用程序其余部分的情况下管理 fps 和进行转换的技术问题。 【参考方案1】:我从未使用过 Unity,但试试这个:String str = System.Text.Encoding.Default.GetString(result);
【讨论】:
这不是将byte[]
转换为有意义的string
的方式
Encoding
类完成这项工作。我要补充一点,一个字符串可以用不同的方式编码,所以你的 OP 可以使用 Unicode、UTF-8 等。否则这是一个好的开始。
这会一次性转换所有字节 [] 并导致 FPS 下降。我使用 WWW.bytes 是因为它更快且不会丢失 FPS。需要在增量时间内转换为字符串。 WWW file = new WWW(path); yield return file; string text= file.text;
以上是关于如何快速将 byte[] 转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章