我看网上别人的文章中:
"    假设现在要在使用不同字节顺序的机器之间传输和交换数据,有两种方法,一种是全部转换成文本来传输,另一种是双方都按照某一方的字节顺序来传输(这时就有一个不同字节顺序之间的相互转换问题)。"对于多字节的整型,我可以理解是根据不同的平台有个高低字节转换的问题;对于文本的话,如果是仅仅ascii的话只有一个字节是没问题,问题是..........
可对于汉字,或unicode 等编码它们是占有多个字节的编码啊....为什么好象我们平时写代码并不进行高低位转换的考虑呢?是我没遇到需要转换的情况,还是因为调用函数低层已经屏蔽处理了这种情况了吗?
谢谢! 新手提问 大家给建议!  

解决方案 »

  1.   

    因为unicode编码的字节顺序是定义好了的,各个系统下都一样。
      

  2.   

    4字节的int比如7,
    有的系统把低字节部分放在前面: 07 00 00 00
    有的系统把高字节部分放在前面: 00 00 00 07
    这时候在不同系统进行数据交换的时候就需要转换。
    .net默认用UTF-16 LittleEndian的编码。但是,也存在着UTF-16 BigEndian的编码(Encoding.BigEndianUnicode),只是平常很少用。
    .net也其实做了一些启发式转换,比如侦测文件头的FEFF(BidEndian)或FFFE(LittleEndian)编码表示。
    在创建一个StreamReader的时候,你也可以显式的传入一个Encoding参数,来指示源文件的编码方案。