当前位置:  开发笔记 > 编程语言 > 正文

将带有数字的文本文件转换为二进制

如何解决《将带有数字的文本文件转换为二进制》经验,为你挑选了1个好方法。

我有一个双精度数字的文本文件.数字由换行符分隔.

1.58589
0.04151
0.03562
0.02866
0.04479
0.01562
0.0219
0.01162
0.0089
0.0123
0.00621
-0.0135
-0.0046
-0.01052
-0.00873
0.0018
0.00436
....

如何将其转换为具有默认(系统)字节顺序的二进制文件?


编辑:

我不想压缩文件,只需确保连续存储双打,而文件中没有任何附加信息(标题等).

目标是能够稍后将文件直接读入内存并进行重新解释转换以获得double*数组(例如此处).


编辑2: 这个问题对整数提出了同样的问题,这更容易,因为二进制表示更简单.


编辑3:使用schaiba的提示可以将666.42转换为二进制数:

echo "obase=2;666.42" | bc
1010011010.011010

但这包含一个点符号.我不知道如何将其写入文件.



1> Michael Home..:

最直接的方法可能是使用Perlpack:

perl -e 'while(<>) {print(pack "d", $_)}'

或者等价的

perl -pe '$_ = pack "d", $_'

.d手段

原始格式的双精度浮点数.

并且print默认情况下没有尾随换行符,因此这将输出与从标准输入读取的每一行相对应的八字节块.几种语言具有相似的功能,但perl应该无处不在.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有