我试图在Cython类中将大负值转换为uint64_t类型变量。但我不断收到此错误:Cython无法将负值转换为无符号long
OverflowError:不能负的值转换为unsigned long
cdef uint64_t temp2 = <uint64_t>(temp - bitReversal(current_pos))
我从temp - bitReversal(current_pos)
得到的数字是-1152831344652320768,如果我硬编码它的工作原理。现在我构建了一个非常丑陋的黑客将负数转换为相应的未签名数字,但它的速度真的很慢。
将''更改为'(uint64_t)'? (并接受溢出。) –
user2864740
2014-09-18 23:11:56
我可以问*为什么*您试图将负数转换为无符号值? – CoryKramer 2014-09-18 23:12:03
我正在计算与棋类似的游戏的移动掩码。“(uint64_t)'不是cython的有效语法 – 2014-09-18 23:16:20