文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第1章 简介
我刚毕业那会遇到过一个严重的问题——一部国家公认的等离子体研究设备花了整整一周时间收集的上千万个数据的值不太对劲。
比正常情况小了约40个数量级。
我跟我的咨询师挤在他的办公室,在一台崭新的G5 Mac Pro上运行我们的可视化软件,试图搞明白哪里出了问题。从机器中获得的数据是正确的,实验所使用的数字转换器提交的原始数据看上去没有问题。我在Thinkpad笔记本上用IDL语言编写了一个巨大的脚本将原始数据转换成可视化软件能够识别的文件。这些文件的格式十分简单:一个简短的定长头部后面加上一堆二进制浮点数据。我还另外又花了一个小时写了一个程序来验证这些文件,它们也没问题。但当我将所有这些在IDL中看上去如此优雅的数据导入可视化软件以后,它们看上去就像是一锅粥,毫无特色、杂乱无章,所有的值大约都只有10−41左右。
最后我们发现了问题所在:数字转换器和我的Thinkpad使用了“little-endian”格式,而G5 Mac使用了“big-endian”格式。一台机器输出的原始数据值无法被另一台机器正确地读入,反过来也一样。当时我所有想法中最有礼貌的一句是:这也太笨了。哪怕最后发现此类问题是如此司空见惯以至于IDL专门提供了一个SWAP_ENDIAN函数来处理也并没有令我的情绪变得更好。
在此之前我从不关心数据是如何存储的。这个事件以及其他一些类似事件改变了我的想法。作为一名科学家,我最终意识到,我们不仅需要选择数据的组织和存储,同时也需要选择数据的通信方式。设计优雅的标准格式不仅让每个人的生活变得简单(消除了上面愚蠢而又浪费时间的“endian”问题),而且也使得全世界都能共享这些数据。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论