[問題] 關於StreamWriter與BinaryWriter問題

作者: tas72732002 (蔥頭)   2016-03-01 12:45:39
請問各位大大, 以下是我的程式碼
//SteamWirter: 按照字元格式寫入檔案
//BinaryWriter: 按照二進位格式寫入檔案
FileStream fs = File.Open("E:\\MyFile.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.ASCII);
BinaryWriter bw = new BinaryWriter(fs System.Text.Encoding.ASCII);
sw.Write(100);
bw.Write(100);
sw.Close();
bw.Close();
我用UltraEdit 16進制來查看, 發現
sw的輸出為31 30 30
bw的輸出為64 00 00 00
兩個都使用了相同的編碼方式, 我想請問bw輸出64 00 00 00有對照表嗎?
請問他寫的二進制格式是用什麼編碼的啊? 怎麼看起來不像是ASCII的呢?
還是說我搞錯了?
作者: YahooTaiwan (超可愛南西我老婆)   2016-03-01 12:56:00
你的註解就是答案
作者: tas72732002 (蔥頭)   2016-03-01 13:58:00
他的二進位是按照什麼編碼呢64 00 00 00是怎麼對應出來的?ascii 10進制100 16進制代表31 30 30
作者: ssccg (23)   2016-03-01 14:35:00
100的16進位=64,4個byte就是00000064,存成little endian"100"的ascii才是31 30 30,先分清楚string和intStreamWriter(TextWriter)的Write(Int32)會先toString再寫
作者: Litfal (Litfal)   2016-03-01 20:00:00
StreamWriter(基底是TextWriter)寫入讀取是文字,使用指定的編碼方式將ToString()後的結果寫入資料流BinaryWriter則是比較複雜,數值之類的會直接以二進位寫入若寫入的是string則會使用指定的Encoding編碼寫入,且前面會加入長度

Links booklink

Contact Us: admin [ a t ] ucptt.com