JAVA 비트플로우 버퍼 - 변경
2392 단어 java 구현
import java.io.InputStream;
public final class BitStream {
private final int RESELEN = 4096;//
private InputStream in;//
private byte[] bitBuf;//
private int bitPos; //
private int bytePos;//
private int endPos; //bitBuf
public BitStream(InputStream in) {
this.in = in;
bitBuf = new byte[RESELEN + 4]; // ( )
}
public BitStream(InputStream in,int size) {
this.in = in;
bitBuf = new byte[size + 4]; // size( )
}
/**
* <p>
* : bitBuf len ,RESELEN 4 32bit "2 ".
* </p>
*/
public int append(int len) {
if (len + endPos > RESELEN) {
// bytePos
System.arraycopy(bitBuf, bytePos, bitBuf, 0, endPos
- bytePos);
endPos -= bytePos;
bitPos = bytePos = 0;
}
try {
if(in.read(bitBuf, endPos, len)==-1)
return -1;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
endPos += len;
return len;
}
/**
* <p>
* : bitstream
* </p>
*/
public void resetIndex() {
bytePos = bitPos = endPos = 0;
}
/**
* <p>
* : bitBuf 1 bit
* </p>
*/
public int get1Bit() {
int bit = bitBuf[bytePos] << bitPos;
bit >>= 7;
bit &= 0x1;
bitPos++;
bytePos += bitPos >> 3;
bitPos &= 0x7;
return bit;
}
/**
*
* <p>
* :2 <= n <= 17
* </p>
*/
public int getBits17(int n) {
int iret = bitBuf[bytePos];
iret <<= 8;
iret |= bitBuf[bytePos + 1] & 0xff;
iret <<= 8;
iret |= bitBuf[bytePos + 2] & 0xff;
iret <<= bitPos;
iret &= 0xffffff; // 8 0;
iret >>= 24 - n;
bitPos += n;
bytePos += bitPos >> 3;
bitPos &= 0x7;
return iret;
}
http://lfp001.iteye.com/blog/412745
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA는 두 갈래 나무의 전, 중, 후 순서를 반복한다(귀속과 비귀속)최근 면접에서 두 갈래 나무 뒤에 비귀속 실현 방법을 물어본 적이 있는데, 귀속 해결이 될 줄 알았으면 OK인 줄 알았는데 너무 요행을 바라는 것 같아서 다음 면접을 앞두고 이 문제를 정리해 봤다. 우선 두 갈래 트...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.