バイナリファイルとそのバイナリファイルを読むことができるC++コードがあります。代替バイナリをC++の代わりにPythonで読む
int NumberOfWord;
FILE *f = fopen("../data/vec.bin", "rb");
fscanf(f, "%d", &NumberOfWord);
cout << NumberOfWord< <endl;
この出力は次のとおりです。
114042
は、私はPythonで上記のコードのように再実装します。
with open("../data/vec.bin","rb") as f:
b = f.read(8)
print struct.unpack("d",b)[0]
しかし、このコードは機能しません。 私の出力は次のとおりです。
8.45476330511e-53
私の質問は以下のとおりです。
1)整数はC++で8バイトを持っている理由。
%dは二重を意味することはありません。 しかし、実際には変数は整数型を持っていますが、通常はC++で "%d"を使用して出力します。 それは変です。
2)どのように私はPythonコードでC++コードを上記のような実数値を抽出したいのpython
で実数を抽出します。 どうすればいいですか?
多分、私はPythonの構造体モジュールについて誤解しています。
ネブリルスの答えがあります。 Pythonの10進形式指定子も "d"であることを付け加えたいと思います。 'printf("%d "、42);'はPythonのprint( "{0:d}"%42)に対応します。 –
私は飲んだか、 'fscanf(...、"%d "、)'は読み込み用です** text ** file ??? –
ありがとうございます。 'fscanf(...、"%d "、)'は、この時点でバイナリファイルを読み込むためのものです。 –