解析redis bitmap數據

import redis
import binascii

#連接redis
pool = redis.ConnectionPool(host='122.112.163.26', port=6379, db=0, password='fb0401')
r = redis.Redis(connection_pool=pool)
#獲取bitmap 存儲 的字符  ==> b'` \x00\x00\x00\x00\x
res = r.get("leon")
print(res)

# 返回的字符是16進制打包的流數據,需要先解包轉換爲 16進值
r1 = (binascii.hexlify(res))
# 16進值 轉換爲 2進制  => 11000000010000000000000....
r2 = (bin(int(r1, 16))[2:])
print(r2)

# 獲取2進制字節的1所在的 index 位置 => [0, 1, 9, 4999, 9999]
find_all = lambda data, s: [r for r in range(len(data)) if data[r] == s]
r_list = find_all(r2, '1')
print(r_list)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章