标签:import str 地址 port for client ota 字符串 bitmap
主要是记录一下Redis的setbit的用法。
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.BitSet;
public class BitMapTest {
private static final String REDIS_PATH="127.0.0.1"; //ip地址
private static final int REDIS_PORT=6379; //端口号
private static final String REDIS_AUTH="iostream";
private static final JedisPool jedisPool;
static {
//配置JedisPool
JedisPoolConfig config=new JedisPoolConfig();
config.setMaxTotal(10);
final int timeout=2000;
jedisPool=new JedisPool(config,REDIS_PATH,REDIS_PORT,timeout,REDIS_AUTH);
}
private static int pos=0; //pos是记录下一个字符是从哪个开始的 假设第一个字符h第一个bit的pos是0,那么第二个字符e的第一个bit的pos是8,累加上去的。
private static void solve(String binStr,Jedis jedis){
//因为我们用Integer.toBinaryString会省略高位的0
//所以我们需要把0先补上
StringBuilder sb=new StringBuilder();
if(binStr.length()<8){
for(int i=0;i<8-binStr.length();++i){
sb.append(0);
}
sb.append(binStr);
}
binStr=sb.toString();
for(int i=0;i<8;++i){
if(binStr.charAt(i)==‘0‘){
jedis.setbit("test",pos+i,false);
}else {
jedis.setbit("test",pos+i,true);
}
}
pos+=8;
}
public static void main(String[] args) {
Jedis jedis=jedisPool.getResource();
String s="hello";
try {
for (int i = 0; i < s.length(); i++) {
String binStr=Integer.toBinaryString(s.charAt(i));
//将取ASCII编的值并转化成二进制 一个char是两个字节(byte) 1byte=4bit 一个char有8bit 所以上限是127.
//byte和bit的区别要记得
solve(binStr,jedis);
}
System.out.println(jedis.get("test"));
}finally {
jedis.close();
}
}
}
标签:import str 地址 port for client ota 字符串 bitmap
原文地址:https://www.cnblogs.com/viscu/p/9816585.html