私が書いていないwebappと対話するPythonプログラムを書いています。サーバーで(javascript)クライアントに送信されず、共有情報を持つクライアントとサーバーの両方で別々に計算される、私のプログラムで表現する必要のある状態がいくつかあります。PythonでJavascript浮動小数点演算を実行する
例えば、為替のようなものを行くかもしれない:
var x = getValueFromServer(); //client gets 0.73346
x *= 1 << 30;
result = x & 1023
私のPythonコードが正常0.73346受けるが、私はresult
の値を必要とします。 2^30の乗算の結果は、javascriptとPythonでは同じようですが、Python内でfloat値を直接マスクすることはできません。
私は
from struct import pack, unpack
unpack('q', pack('d', 0.73346))[0] & 1023
(上記の例値のために)試してみましたが、これは私がノードに上記のJavaScriptを実行するとしながら、私は私がきた566の値を取得するには、Pythonで696の値を与えますまた、パッキングとアンパックのフォーマットのいくつかの組み合わせを試みましたが、成功しませんでした。
私の最後の手段は、Pythonの内部からノードのサブプロセスを使用してjavascriptを実行することですが、避けたいと思います。これをどうすれば解決できますか?
pythonで566を与えますか? – pointerless
ウェブソケット。それは特にここでは関係ありません。技術的には浮動小数点を直接受け取っていないので、浮動小数点数を受け取って浮動小数点数を計算するので、浮動小数点のデコードには問題ありません。 –
私はあなたが 'struct'で何を達成したいのかよく分かりません。それは、算術演算に似た何かをするのではなく、floatのビットパターンを整数として再解釈することです。 'int(0.73346 *(1 << 30))&1023'のようなものは何をしていますか? –