Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Binary 将带有数字的文本文件转换为二进制文件_Binary_Ascii - Fatal编程技术网

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

Binary 将带有数字的文本文件转换为二进制文件,binary,ascii,Binary,Ascii,我有一个双精度数字的文本文件。数字由换行符分隔 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 .... 如何将其转换为具有默认(系统)endianness的二进制文件 编辑: 我不想压缩文件,只需确保double连续存储,而不在文件中添加任何附加信息(头等) 我们的目标是能

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

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
....
如何将其转换为具有默认(系统)endianness的二进制文件


编辑:

我不想压缩文件,只需确保double连续存储,而不在文件中添加任何附加信息(头等)

我们的目标是能够在以后将文件直接读入内存,并重新解释转换为
double*
数组(例如,like)


编辑2: 对整数也有同样的要求,因为二进制表示更简单,所以更容易


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

echo "obase=2;666.42" | bc
1010011010.011010

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

最简单的方法可能是使用:

<代码>d表示

本机格式的双精度浮点


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

最简单的方法可能是使用:

<代码>d表示

本机格式的双精度浮点


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

指针:
echo“obase=2;$number”| bc
不清楚您所说的“默认(系统)端性”是什么意思。有许多可能的解释,这完全取决于您以后打算如何处理二进制文件。@Alexander我添加了更多解释。这是一个非常简单的问题,在第一次修订中。它要求将文本浮点数文件转换为连续的本机endian IEEE754 binary64。@countermode此问题与主题有关,不应被迁移。指针:
echo“obase=2;$number”| bc
不清楚您所说的“默认(系统)endianness”是什么意思。有许多可能的解释,这完全取决于您以后打算如何处理二进制文件。@Alexander我添加了更多解释。这是一个非常简单的问题,在第一次修订中。它要求将文本浮点数文件转换为连续的本机endian IEEE754 binary64。@countermode此问题是关于主题的,不应该被迁移。是否有类似的方法从二进制文件中获取原始文本文件?@初学者您相信。。。有没有类似的方法从二进制文件中获取原始文本文件?@初学者,你相信吗。。。
perl -e 'while(<>) {print(pack "d", $_)}'
perl -pe '$_ = pack "d", $_'