package Datess;
import java.util.Arrays;
import java.util.BitSet;
public class BitSetConvert {
public static byte[] bitSet2ByteArray(BitSet bitSet) {
byte[] bytes = new byte[bitSet.size() / 8];
for (int i = 0; i < bitSet.size(); i++) {
int index = i / 8;
int offset = 7 - i % 8;
bytes[index] |= (bitSet.get(i) ? 1 : 0) << offset;
}
return bytes;
}
public static BitSet byteArray2BitSet(byte[] bytes) {
BitSet bitSet = new BitSet(bytes.length * 8);
int index = 0;
for (int i = 0; i < bytes.length; i++) {
for (int j = 7; j >= 0; j--) {
bitSet.set(index++, (bytes[i] & (1 << j)) >> j == 1 ? true
: false);
}
}
return bitSet;
}
public static void main(String[] args) {
BitSet bitSet = new BitSet();
BitSet b = BitSet.valueOf("1".getBytes());
BitSet bb = byteArray2BitSet("1".getBytes());
//将BitSet对象转成byte数组
byte[] bytes = bitSet2ByteArray(b);
System.out.println(Arrays.toString(bytes));
bitSet.set(0, true);
bitSet.set(10, true);
//bitSet.or(b);
//将BitSet对象转成byte数组
/* byte[] bytes = bitSet2ByteArray(bitSet);
System.out.println(Arrays.toString(bytes));*/
//在将byte数组转回来
bitSet = byteArray2BitSet(bytes);
System.out.println(bitSet.get(0));
System.out.println(bitSet.get(10));
System.out.println("\n===列出BitSet处理后的结果=======");
for (int i = bitSet.nextSetBit(0); i >= 0; i = bitSet.nextSetBit(i + 1)) {
System.out.print(i+"\t");
}
}
}
import java.util.Arrays;
import java.util.BitSet;
public class BitSetConvert {
public static byte[] bitSet2ByteArray(BitSet bitSet) {
byte[] bytes = new byte[bitSet.size() / 8];
for (int i = 0; i < bitSet.size(); i++) {
int index = i / 8;
int offset = 7 - i % 8;
bytes[index] |= (bitSet.get(i) ? 1 : 0) << offset;
}
return bytes;
}
public static BitSet byteArray2BitSet(byte[] bytes) {
BitSet bitSet = new BitSet(bytes.length * 8);
int index = 0;
for (int i = 0; i < bytes.length; i++) {
for (int j = 7; j >= 0; j--) {
bitSet.set(index++, (bytes[i] & (1 << j)) >> j == 1 ? true
: false);
}
}
return bitSet;
}
public static void main(String[] args) {
BitSet bitSet = new BitSet();
BitSet b = BitSet.valueOf("1".getBytes());
BitSet bb = byteArray2BitSet("1".getBytes());
//将BitSet对象转成byte数组
byte[] bytes = bitSet2ByteArray(b);
System.out.println(Arrays.toString(bytes));
bitSet.set(0, true);
bitSet.set(10, true);
//bitSet.or(b);
//将BitSet对象转成byte数组
/* byte[] bytes = bitSet2ByteArray(bitSet);
System.out.println(Arrays.toString(bytes));*/
//在将byte数组转回来
bitSet = byteArray2BitSet(bytes);
System.out.println(bitSet.get(0));
System.out.println(bitSet.get(10));
System.out.println("\n===列出BitSet处理后的结果=======");
for (int i = bitSet.nextSetBit(0); i >= 0; i = bitSet.nextSetBit(i + 1)) {
System.out.print(i+"\t");
}
}
}