送分100分:关于大端序小端序的有关问题

送分100分:关于大端序小端序的问题
一个LONG型数值在内存、文件、显示时的端序问题,哪位可告知的详细一些。

------解决方案--------------------
http://zh.wikipedia.org/wiki/%E5%AD%97%E8%8A%82%E5%BA%8F
只有在内存中才会涉及这个 其他的时候都不会涉及到 即使是进行位的左移或右移也不用考虑
------解决方案--------------------
内存中的与计算机硬件有关,80x86 的是 little-endian,MAC 机的是 big-endian。

操作系统与硬件匹配,应此保存的文件默认格式为 80x86 下的是 little-endian,MAC 机下的是 big-endian。但是文件是可以跨系统传输的,所以操作与本系统不一致的端序文件不稀奇。有的是处理程序强制指定文件的端序;更好的方式是在文件头中加上 BOM 标记,WinXP 的记事本就有这个功能。

显示其实无所谓端序,只不过一般习惯的书写顺序是从大到小,所以也可以认为是 big-endian。
------解决方案--------------------
在内存、文件中都要考虑大端小端问题
比如要保存
dim L as long
L=&H12345678&
小端在内存(沿地址从小到大方向)和文件(沿偏移量从小到大方向)中都是&h78 &h56 &h34 &h12四个字节(用于Intel系列CPU)

大端在内存(沿地址从小到大方向)和文件(沿偏移量从小到大方向)中都是&h12 &h34 &h56 &h78四个字节(用于MC68000系列CPU和网络封包时)
------解决方案--------------------
参考上帖
如果你在内存或文件中看到&h00 &h00 &h00 &h01四个字节并将其理解为一个Long变量时
小端其值是&H01000000&对应十进制16777216
大端其值是&H00000001&对应十进制1
------解决方案--------------------
网络传输一般采用大端序,也被称之为网络字节序,或网络序。IP协议中定义大端序为网络字节序。

伯克利socket API定义了一组转换函数,用于16和32bit整数在网络序和本机字节序之间的转换。htonl,htons用于本机序转换到网络序;ntohl,ntohs用于网络序转换到本机序。