[问题] 关于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