跨系统传输数据时的二进制数据

时间:2019-01-26 01:28:53

标签: c binary fwrite fread

此报价来自CERT FIO09-C

  

使用fread()和fwrite()函数时,要考虑可移植性   跨多个异构系统。特别是从来没有   确保读取或写入标量数据类型,例如   整数,更不用说聚合诸如数组或结构之类的类型了   保留数据的表示形式或值。实现可能   结构填充,浮点模型,每位位数不同   字节,字节序和其他导致二进制数据格式的属性   不兼容。

     

...

     

读取格式与预期格式不同的二进制数据   导致程序意外行为。

     

CERT FIO09-C

我正在从Pearson C书中阅读:

  

尽管fread和fwrite读取和写入数据,例如整数   固定大小而不是可变大小格式,它们处理的数据是   以计算机“原始数据”格式(即数据字节)处理   而不是printf和scanf的人类可读文本格式。因为   数据的“原始”表示取决于系统,“原始数据”可能不依赖于系统   在其他系统或其他系统生成的程序上可读   编译器或其他编译器选项。

     

有关便携式文件的更多表示形式,请考虑使用文本文件或函数   可以处理二进制文件表示形式差异的库   跨平台。

我在网上搜索,但是找不到本书提到的C库。我尝试了许多不同的关键字,但没有弹出任何提示。不知道他是否意味着我必须编写自己的库,或者那里有库。

有人知道任何可以处理跨系统传输二进制数据(例如,用fwrite编写的文件)的C库吗?

0 个答案:

没有答案