我正在编写一个与我没写过的webapp交互的Python程序。我需要在我的程序中表示一些状态,该状态不是由服务器发送到(javascript)客户端,而是在客户端和服务器上分别使用共享信息计算。
例如,交换可能类似于:
var x = getValueFromServer(); //client gets 0.73346
x *= 1 << 30;
result = x & 1023
我的Python代码成功收到0.73346,但我需要result
的值。乘以2 ^ 30的结果在javascript和Python中似乎是相同的,但我无法直接掩盖Python中的浮点值。
我已经尝试过(对于上面的示例值)
from struct import pack, unpack
unpack('q', pack('d', 0.73346))[0] & 1023
但是这在Python中给出了696的值,而当我在节点中运行上面的javascript时,得到的值为566.我还尝试了一些打包和解包格式的其他组合,但没有成功。
我的最后一招是使用节点子流程从Python内部执行javascript,但我更愿意避免这种情况。我该如何解决这个问题?
答案 0 :(得分:3)
x = 0.73346
x = x * (1 << 30)
x = int(x) & 1023
在python中给出了566