2012-08-10 19 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?