編集:問題は、入力の精度を指定しても、別の方法で指定しない限り、matlab が double に変換されることでした。私の間違い。
単純な 64 ビット整数を matlab に読み込むと、python または Windows 電卓で変換を行う場合とは異なる値が得られるようです。
内容が 8 バイトの小さなファイルがあります。
0x99, 0x1e, 0x6b, 0x40, 0x27, 0xe3, 0x01, 0x56
私はmatlabで以下を使用します:
fid = fopen('test.data')
input = fread(fid, 1, 'int64')
私は得る
input = 6197484319962505200
ただし、python または Windows 電卓のいずれかを使用すると、 の異なる 10 進数表現が得られ0x5601e327406b1e99
ます。両方とも、私が取得する必要があると予測
していますinput = 6197484319962504857
(これは 343 異なります)。それは明らかにエンディアンの問題ではありません。
大きなバイナリ ファイルから double を読み取ると奇妙な結果が得られたため、最初はこれをテストするように導かれました。次に、それらを整数として読み込んで、手で比較してみました。
私の質問は、何か間違ったことをしているのですか、見落としていることがありますか、それともmatlabがここでエラーを起こしていますか? win64 matlab R2010a を使用しています。