外部组为我提供了在Big Endian机器上编写的文件,它们还为文件格式提供了C++解析器.
我只能在一个小端机器上运行解析器 - 有没有办法使用它们的解析器读取文件,而不是在每次读取后添加一个swapbytes()调用?
Joh*_*ohm 13
早在铁器时代早期,Ancients在尝试将原始PDP-11小型机与其他原始计算机联网时遇到了这个问题.PDP-11是第一台小端计算机,而当时大多数其他计算机都是大端计算机.
为了解决这个问题,他们一劳永逸地开发了网络字节顺序概念(总是big-Endia),以及相应的网络字节顺序宏ntohs(),ntohl(),htons()和htonl().用这些宏编写的代码将始终"得到正确的答案".
在您的外部供应商处倾斜以在其代码中使用宏,并且他们提供给您的文件将始终是big-Endian,即使他们切换到little-Endian机器.重写他们给你的解析器来使用宏,即使你切换到big-Endian机器,你也总是可以读取他们的文件.
在这个特定问题上浪费了大量的程序员时间.有几天我认为可以做出一个很好的论据来悬挂PDP-11设计师做出小端特征的决定.
| 归档时间: |
|
| 查看次数: |
2815 次 |
| 最近记录: |