私は、後でpythonを使って開くために、C++を使って一連の数値をバイナリファイルに保存したいと思います。現在、私はC++の名前* writer.cppで次のスクリプトを持っている:C++でバイナリを書いて、Pythonで読む
g++ -o writerTest.x writer.cpp
としてコンパイル
#include <fstream>
int main()
{
std::ofstream outFile;
outFile.open("binaryFile.bin", std::ios::binary);
int number = 0;
for (int i=0; i<10; i++){
number += i;
outFile.write(reinterpret_cast<const char*>(&number), sizeof(int));
}
outFile.close();
return 0;
}
と
./writerTest.x
として実行「binaryFileという名前のバイナリファイルを生成します。ビン "。
私はその後、名前の次のスクリプトを使用してこの使用のpython reader.py読み取ろう:
import numpy as np
from sys import argv
path = str(argv[1])
x = np.fromfile(path)
print x, type(x)
PythonはbinaryFile.bin は、次のような結果が生成さreader.pyとしてこれを実行し
[ 2.12199579e-314 1.27319747e-313 3.18299369e-313 5.94158822e-313
9.54898106e-313] <type 'numpy.ndarray'>
これは明らかに私が望んでいたものではありません。私は間違って何をしていますか、これはどうやって正しく行われるべきですか?
ファイルをキャストして書き込むことはできません。データを既知の形式(既存の形式または自分で作成した形式)にシリアル化する必要があります。 – spectras
整数や浮動小数点数を書いていますが、動作できません。 (バイナリ) –
@spectras:実際には、過度に攻撃的ではなく、「合理的」なプラットフォームではないオプティマイザを想定すると、OPのコードはほとんどの場合有効です。理論的には、文字をビットマスクして一連の文字に再構成する必要があります。 – Kevin