看板 C_Sharp 關於我們 聯絡資訊
請問各位大大, 以下是我的程式碼 //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的呢? 還是說我搞錯了? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.89.1 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1456807541.A.094.html
YahooTaiwan: 你的註解就是答案 03/01 12:56
tas72732002: 他的二進位是按照什麼編碼呢 03/01 13:58
tas72732002: 64 00 00 00是怎麼對應出來的? 03/01 14:04
tas72732002: ascii 10進制100 16進制代表31 30 30 03/01 14:06
ssccg: 100的16進位=64,4個byte就是00000064,存成little endian 03/01 14:35
ssccg: "100"的ascii才是31 30 30,先分清楚string和int 03/01 14:43
ssccg: StreamWriter(TextWriter)的Write(Int32)會先toString再寫 03/01 14:44
Litfal: StreamWriter(基底是TextWriter)寫入讀取是文字,使用指定 03/01 20:00
Litfal: 的編碼方式將ToString()後的結果寫入資料流 03/01 20:01
Litfal: BinaryWriter則是比較複雜,數值之類的會直接以二進位寫入 03/01 20:04
Litfal: 若寫入的是string則會使用指定的Encoding編碼寫入,且前面 03/01 20:06
Litfal: 會加入長度 03/01 20:06