求解惑一个二进制文件在不同字节序设备中传输的问题
两个系统一个在大端字节序,一端是小端字节序。
对于一些二进制文件的处理上,通用的文件传输协议如何解决字节序问题。
首先问一个问题,比如有种二进制文件,定义好文件结构为开头一个unsigned short length,然后跟着length个Assic字符。
如果一个文件内容是:lenth=1,后面A。
那么小端设备上的存储方式是不是为:01 00 'A'。而大端设备上的存储方式就应该为00 01 ‘A’。两个设备上各有自己系统下的应用软件可以解析该文件。
上述的理解是否正确?如果正确,那么下面的问题如何解决?
通用的文件传输协议,比如FTP、TFTP,并不认识上述的文件结构。文件在不同字节序的设备传递后,能正确的保证让对应的应用软件解析吗?
[解决办法]
你的理解是对的,小端上低位存放低字节
在大小端上二进制文件可能会有问题,可以采用xml这样的面向文本的形式组织数据,或是用XDR数据结构传输标准来解决
[解决办法]
网络上传送时大家统一使用网络字节序,其实就是大端吧
其实你不需要记住这个,因为有一组函数用来在本地字节序和网络字节序之间转换
你在发送前转换一下,接收前也转换一下
这样就没问题了