📄 bitmaskencoder.java
字号:
/**
*
* <p>Title: Smgp协议TLV结构解析</p>
* <p>Description: 编码处理</p>
* <p>Copyright: Copyright (c) 2007</p>
* <p>Company: 福富软件</p>
* @author chenxin
* @version 1.0 $Date 2007-07-03
*/
package ffcs.lbp.le.message.tlv;
import java.util.BitSet;
/**
* Encoder for bit mask value types. This class encodes and decodes
* {@link java.util.BitSet}objects to and from byte arrays.
*
* @version $Id: BitmaskEncoder.java 264 2006-03-09 14:00:40Z orank $
* @see java.util.BitSet
*/
public class BitmaskEncoder implements Encoder {
/**
* Create a new BitmaskEncoder.
*/
public BitmaskEncoder() {
}
public void writeTo(Tag tag, Object value, byte[] b, int offset) {
try {
BitSet bs = (BitSet) value;
int l = tag.getLength();
for (int i = 0; i < l; i++) {
b[offset + i] = 0;
for (int j = 0; j < 8; j++) {
if (bs.get((i * 8) + j)) {
b[offset + i] |= (byte) (1 << j);
}
}
}
} catch (ClassCastException x) {
throw new BadValueTypeException("Value must be of type "
+ "java.util.BitSet");
}
}
public Object readFrom(Tag tag, byte[] b, int offset, int length) {
BitSet bs = new BitSet();
for (int i = 0; i < length; i++) {
for (int j = 0; j < 8; j++) {
if ((b[offset + i] & (byte) (1 << j)) != 0) {
bs.set((i * 8) + j);
}
}
}
return bs;
}
public int getValueLength(Tag tag, Object value) {
return tag.getLength();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -