我想知道如何在redis中获得位集的字符串值,我有以下代码:

import redis as redis


def main():
    redisClient = redis.StrictRedis(host='localhost', port=6379, db=0)
    redisClient.setbit("mybitset",5,1)
    bitset=redisClient.get("mybitset")
    print bitset # expect the output to be 100000


if __name__=="__main__":
    main()

最佳答案

如果我理解正确,redisClient.get("mybitset")调用将返回一个包含二进制数据的字符串。尝试将print bitset替换为:

print "{0:b}".format(ord(bitset[0]))

仅当您的位集为一字节长时,这才起作用。如果它跨越多个字节,请尝试使用 struct 模块。例如,如果它是两个字节长(即一个短字节):
print "{0:b}".format(struct.unpack(">h", bitset)[0])

10-06 15:14