我有一個程序,一個byte []轉換爲十六進制的字符串:運行內存建設大規模串
byte[] bytes = File.ReadAllBytes(infile);
try
{
StringBuilder sb = new StringBuilder(BitConverter.ToString(bytes)); // <--exception
hexfield.Text = sb.ToString();
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
}
這工作適合大多數情況下。但是,當我用一個巨大的文件,例如一個103 MB的FLV視頻文件,它運行的內存,它拋出一個異常:
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.String.CtorCharArrayStartLength(Char[] value, Int32 startIndex, Int32 length)
at System.BitConverter.ToString(Byte[] value, Int32 startIndex, Int32 length)
at System.BitConverter.ToString(Byte[] value)
at shex.shexx.hexfield_Dragrop(Object sender, DragEventArgs e)**
你需要怎樣處理累加的字節? – sll
真正的課程問題是:爲什麼。您不可能有用地將該值分配給輸入控件(假設hexfield爲1)。你應該簡單地截斷它到有用的數額。 – sehe
@sll與字節或十六進制字符串?問題是:''將字節[]轉換爲十六進制字符串的程序「' – StuperUser