如何快速将 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[] 转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何将16进制 转换byte数组

如何使用 XmlConvert 类将 byte[] 转换为字符串? [复制]

在java中,如何将byte转为string

java怎么将string转换成byte数组

在java中如何将全为数字的字符串转化为byte数组?

如何把一个byte数组转化为字符串