我試圖在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