因为要将js的一个签名算法移植到python上,遇到一些麻烦。
int无限宽度,不会溢出算法中需要用到了32位int的溢出来参与运算,但是python的int是不会溢出的,达到界限后会自己转为long,所以很麻烦。
#使用-342686650:
ret = 123456789 >b来实现无符号位移,python中没有这个运算符,只能自己实现了 无符号右移>>>,就是将有符号int a和b转为无符号uint后,再进行普通右移>>运算 比如-1的有符号int就是-1,无符号int就是4294967295 我们自己实现>>>可以这样
#无符号右移
import ctypes
def unsigned_right_shitf(n,i):
# 数字小于0,则转为32位无符号uint
if n>> 20 一样。
链接:https://www.jianshu.com/p/24d11ab44ae6