3

我正在尝试将负值存储到 Redis 位集中,但操作失败并出现以下错误:

位偏移量不是整数或超出范围

有人可以解释为什么不支持在 Redis 位集中存储负数吗?

4

1 回答 1

2

因为没有人使用负数引用位集中的位置。位数组中的位集,因此它的索引是一个正整数。

如果您有一个负数(例如来自散列函数),那么您需要先将其转换为无符号整数。在大多数语言中这样做很简单。

在 Java 的特定情况下,要将有符号的 int 转换为 long 的底部 32 位中的无符号值,您需要与 0xffffffffL 进行与运算。请参阅以下链接:

将有符号整数转换为无符号长整数的最佳方法?

于 2012-08-10T15:13:32.527 回答