Head First C# 中文版 第九章 读写文件 page424

本文介绍了C#中对象序列化的原理及其文件格式,解释了为什么序列化后的文件虽然以二进制形式存储但仍可识别其中的字符串。同时探讨了.NET如何使用Unicode编码来处理字符串,并提供了一个实用工具——字符映射表来帮助理解Unicode的工作机制。

 

 

把一个对象序列化到文件的时候,是以二进制格式写的。


这并不意味着它不可读--只是紧凑而已。你打开序列化对象的文件的时候你可以识别里面的字符串的原因就是因为C#把字符串写入到文件的最紧凑的方式就是作为字符串写入。但如果把数字作为字符串写入文件的话就太浪费了。任何int都可以用四个字节存储起来。所以如果C#把数字49369144以你可以阅读的方式作为八个字符(算上逗号就是十个字符)的字符串写入文件的话,那就太浪费空间了!


.NET使用Unicode来把字符或者字符串编码到字节。很幸运,Windows有一个很有用的工具可以帮你来搞明白Unicode如何工作。打开字符映射表(它在开始菜单内的附件之内,或者在cmd中输入“charmap.exe”)。


当你看全世界中这些语言中所有字母和符号的时候,你就可以意识到要向文件中写入文本需要多少不同的东西。所以.NET把其字符串编码为Unicode。编码意味着把逻辑数据(比如字母H)转换为字节(比如72)。之所以这么设计是因为字母,数字,枚举和其他数据在内存和硬盘上都以字节的形式存在。这正是字符映射表的有用之处--它向你展示了字符是如何转换为数字的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值