2011-03-23 30 views
0
System.IO.BinaryWriter outfile; 

System.IO.FileStream fs = new System.IO.FileStream(some_object.text, System.IO.FileMode.Create); 

outfile = new System.IO.BinaryWriter(fs); 

outfile.Write('A'); // Line 1 
outfile.Write('B'); // Line 2 
outfile.Write('C'); // Line 3 
outfile.Write(Convert.ToUInt16(some_object.text, 16)); // Line 4 
outfile.Write((ushort)0); // Line 5 

這裏我聲明一個BinaryWriter來創建我的輸出文件。 我需要清楚的知道文件是如何被寫入的? 含義,即第1,2,3行寫入文件Byte By Byte,意思是一次一個字節,如果我正確的話??用C寫文件的順序#

這個some_object.text保存價值2000

Line 4究竟寫了多少字節? (因爲UInt16的16位,2個字節/ 16位)?

+1

那些誰也不會寫任何東西。您只聲明一個可能包含二進制編寫器的變量,但您從不附加實例。你的作家仍然是'空'。解決這個問題後,我建議你實際編譯並運行代碼,然後查看文件以找出答案。 – 2011-03-23 19:57:41

+0

@ user667389,你會驚訝每天有多少次發佈的問題都歸結爲沒有實際實例化一個對象。 @Joel Coehoorn不知道你是否是其中的一員。無論你發佈什麼,我們不得不假設的是你的實際代碼。 – 2011-03-23 20:05:08

回答

1

BinaryWriter使用BitConverter類創建寫入底層流的字節序列。瞭解最新進展的一個好方法是使用.NET Reflector。它可以反編譯程序集並很容易地用來找出框架實現細節。

大多數二進制寫入方法在little endian中使用本地表示形式(儘管endian是特定於體系結構的,並且在諸如XBOX和Windows之類的平臺之間有所不同)。唯一的例外是字符串。字符串默認使用UTF-8編碼進行編碼。