Skip to content

Commit bafdc05

Browse files
authored
fixed bug which caused to return wrong result when bit was shifted (#49)
fixed bug which caused to return wrong result when bit was shifted
1 parent c979af1 commit bafdc05

File tree

2 files changed

+5
-8
lines changed

2 files changed

+5
-8
lines changed

jbbp/src/main/java/com/igormaznitsa/jbbp/io/JBBPBitInputStream.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1073,7 +1073,7 @@ public int readBits(final JBBPBitNumber numOfBitsToRead,
10731073
if (numOfBitsAsNumber == this.bitsInBuffer) {
10741074
result = this.bitBuffer;
10751075
if (this.bitOrderMode == JBBPBitOrder.MSB0_DIRECT) {
1076-
result >>>= this.bitsInBuffer;
1076+
result >>>= (8-this.bitsInBuffer);
10771077
}
10781078
this.bitBuffer = 0;
10791079
this.bitsInBuffer = 0;

jbbp/src/test/java/com/igormaznitsa/jbbp/io/JBBPBitInputStreamTest.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,7 @@
1616

1717
package com.igormaznitsa.jbbp.io;
1818

19-
import static com.igormaznitsa.jbbp.io.JBBPBitNumber.BITS_1;
20-
import static com.igormaznitsa.jbbp.io.JBBPBitNumber.BITS_2;
21-
import static com.igormaznitsa.jbbp.io.JBBPBitNumber.BITS_3;
22-
import static com.igormaznitsa.jbbp.io.JBBPBitNumber.BITS_4;
23-
import static com.igormaznitsa.jbbp.io.JBBPBitNumber.BITS_5;
24-
import static com.igormaznitsa.jbbp.io.JBBPBitNumber.BITS_8;
19+
import static com.igormaznitsa.jbbp.io.JBBPBitNumber.*;
2520
import static com.igormaznitsa.jbbp.io.JBBPByteOrder.BIG_ENDIAN;
2621
import static com.igormaznitsa.jbbp.utils.JBBPUtils.bin2str;
2722
import static com.igormaznitsa.jbbp.utils.JBBPUtils.str2bin;
@@ -123,10 +118,12 @@ public void testIsDetectedPartlyReadBitField() throws Exception {
123118

124119
@Test
125120
public void testReadMsb0Direct() throws Exception {
126-
byte[] data = str2bin("00000001_101_00001000_00000_01_00_1011_00000");
121+
byte[] data = str2bin("10000100_00000001_101_00001000_00000_01_00_1011_00000");
127122

128123
JBBPBitInputStream in =
129124
new JBBPBitInputStream(new ByteArrayInputStream(data), JBBPBitOrder.MSB0_DIRECT);
125+
assertEquals(1, in.readBits(BITS_1));
126+
assertEquals(4, in.readBits(BITS_7));
130127
assertEquals(1, in.readBits(BITS_8));
131128
assertEquals(5, in.readBits(BITS_3));
132129
assertEquals(8, in.readBits(BITS_8));

0 commit comments

Comments
 (0)