我正在尝试将负值存储到Redis位集中,但操作失败并出现以下错误:
位偏移不是整数或超出范围
有些人可以解释为什么不支持在Redis位集中存储负数吗?
答案 0 :(得分:2)
因为没有人使用负数引用位集中的位置。位数组中的bitset,因此其索引是正整数。
如果您有一个负数(例如来自散列函数),那么您需要先将其转换为无符号整数。在大多数语言中都很简单。
在Java的特定情况下,要将signed int转换为long的底部32位中的无符号值,则需要AND与0xffffffffL。请参阅以下链接: