2012-08-10 56 views
3

我想負值存儲到Redis的位集合,但操作失敗,出現以下錯誤:Redis位集只能訪問正值?

bit offset is not an integer or out of range

可能有些請解釋爲什麼在Redis的位集存儲負數不支持?

回答

2

因爲沒有人使用負數引用bitset中的位置。位數組中的位集,因此其索引是一個正整數。

如果您有一個負數(例如來自散列函數),那麼您需要先將其轉換爲無符號整數。在大多數語言中這是直截了當的。

在Java的特定情況下,要將帶符號的int轉換爲長整數的低32位中的無符號值,您需要使用0xffffffffL與AND。請參閱以下鏈接:

Best way to convert a signed integer to an unsigned long?