【发布时间】:2017-01-13 08:38:39
【问题描述】:
我有一个带有双精度数字的文本文件。数字由换行符分隔。
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*数组(例如here)。
编辑 2: This question 对整数提出同样的要求,这更容易,因为二进制表示更简单。
编辑 3: 使用 schaiba 的提示可以将 666.42 转换为二进制数:
echo "obase=2;666.42" | bc
1010011010.011010
但这包含一个点符号。我不确定如何将其写入文件。
【问题讨论】:
-
指针:
echo "obase=2;$number" | bc -
不清楚您所说的“使用默认(系统)字节序”是什么意思。有许多可能的解释,这完全取决于您以后打算如何处理二进制文件。
-
@Alexander 我添加了更多解释。
-
这是一个非常简单的问题,并且在第一次修订中。它要求将文本浮点数文件转换为连续的本机字节序 IEEE754 binary64。
-
@countermode 这个问题是Unix & Linux 的主题,不应该被迁移。