作者tas72732002 (葱头)
看板C_Sharp
标题[问题] 关於StreamWriter与BinaryWriter问题
时间Tue Mar 1 12:45:39 2016
请问各位大大, 以下是我的程式码
//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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1456807541.A.094.html
1F:推 YahooTaiwan: 你的注解就是答案 03/01 12:56
2F:→ tas72732002: 他的二进位是按照什麽编码呢 03/01 13:58
3F:→ tas72732002: 64 00 00 00是怎麽对应出来的? 03/01 14:04
4F:→ tas72732002: ascii 10进制100 16进制代表31 30 30 03/01 14:06
5F:→ ssccg: 100的16进位=64,4个byte就是00000064,存成little endian 03/01 14:35
6F:→ ssccg: "100"的ascii才是31 30 30,先分清楚string和int 03/01 14:43
7F:→ ssccg: StreamWriter(TextWriter)的Write(Int32)会先toString再写 03/01 14:44
8F:→ Litfal: StreamWriter(基底是TextWriter)写入读取是文字,使用指定 03/01 20:00
9F:→ Litfal: 的编码方式将ToString()後的结果写入资料流 03/01 20:01
10F:→ Litfal: BinaryWriter则是比较复杂,数值之类的会直接以二进位写入 03/01 20:04
11F:→ Litfal: 若写入的是string则会使用指定的Encoding编码写入,且前面 03/01 20:06
12F:→ Litfal: 会加入长度 03/01 20:06