[英]Fastest way to convert a possibly-null-terminated ascii byte[] to a string?
[英]Fastest way to convert byte[] to string?
我需要在 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;
byte[] text= file.bytes;
如果文件太大,WWW.text,丟棄 FPS,那么我需要使用 WWW.bytes。 在 Unity 中 useyield 返回 null; 處理另一幀。 如果進程需要太多時間來執行,則刪除 FPS(在 WWW.text 的情況下);
Ex 文件: http : //people.sc.fsu.edu/~jburkardt/data/obj/cessna.obj
我猜 WWW 在內部將請求結果存儲為字節數組,並在您訪問text
字段時將其轉換為字符串(這真的是一個字段嗎?)。
因此,無論如何,將該字節轉換為字符串都需要分配內存並使用正確的編碼來處理該字節數組。
最好的辦法是直接從字節數組中提取數據,而不是先將其轉換為大字符串。
編輯
或者,您可以將字節數組包裝在MemoryStream
,然后使用適當的編碼將其再次包裝在StreamReader
(我猜 OBJ 文件是純 ASCII)。
您的文件將在您閱讀時逐步轉換。
在您的處理循環中使用該yield
模式,它應該很好!
以這種方式嘗試:
WWW file = new WWW(path);
while(!file.isDone)
{
yield return new WaitForSeconds(0.1f);
}
string text = file.text;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.