Linux与solaris处理二进制数据时有区别

当我把WRY查找IP的perl模块放到solaris上运行的时候,出现了意想不到的问题。最后终于发现原来是Linux和solaris在处理二进制数据是有区别的,默认情况下,redhat linux是按照Little-Endian处理的,而Solaris则相反。而原来写在perl中的unpack参数用的是unpack("II",??),“I”是按照本机的处理顺序,所以在Solaris上就出现了异常。

把参数修改成"V"就没有问题了。

关于Big-Endian 和 Little-Endian的一个例子:
如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为
big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x34 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12