From 2dd0a815d04bf97e82d130e52e75cd5ba1734058 Mon Sep 17 00:00:00 2001 From: Jeff Schiller Date: Sat, 16 Dec 2023 22:13:53 -0800 Subject: [PATCH] Add some documentation for BitStream --- README.md | 2 +- docs/bitjs.io.md | 32 ++++++++++++++++++++++++++++++++ docs/bitstream-ltm.png | Bin 0 -> 30335 bytes docs/bitstream-mtl.png | Bin 0 -> 29714 bytes 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 docs/bitjs.io.md create mode 100644 docs/bitstream-ltm.png create mode 100644 docs/bitstream-mtl.png diff --git a/README.md b/README.md index d8945b9..8727133 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,7 @@ const crc = bstream.readBits(12); // read in 12 bits as CRC, advancing the point const flagbits = bstream.peekBits(6); // look ahead at next 6 bits, but do not advance the pointer ``` - +More explanation and examples are located on [the API page](./docs/bitjs.io.md). ## Reference diff --git a/docs/bitjs.io.md b/docs/bitjs.io.md new file mode 100644 index 0000000..4bd5484 --- /dev/null +++ b/docs/bitjs.io.md @@ -0,0 +1,32 @@ +# bitjs.io + +This package includes stream objects for reading and writing binary data at the bit and byte level: +BitStream, ByteStream. + +## BitStream + +A bit stream is a way to read a variable number of bits from a series of bytes. This useful for +parsing certain protocols (for example pkzip or rar algorithm). Note that the order of reading +bits can go from least-to-most significant bit, or the reverse. + +### Least-to-Most Direction + +![BitStream reading from least-to-most significant bit](bitstream-ltm.png) + +```javascript +const bstream = new BitStream(ab, false /* mtl */); +bstream.readBits(6); // (blue) 0b001011 = 11 +bstream.readBits(5); // (red) 0b11001 = 25 +bstream.readBits(8); // (green) 0b10000010 = 130 +``` + +### Most-to-Least Direction + +![BitStream reading from most-to-least significant bit](bitstream-mtl.png) + +```javascript +const bstream = new BitStream(ab, true /* mtl */); +bstream.readBits(6); // (blue) 0b010010 = 18 +bstream.readBits(5); // (red) 0b11000 = 24 +bstream.readBits(8); // (green) 0b10110100 = 180 +``` diff --git a/docs/bitstream-ltm.png b/docs/bitstream-ltm.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed03bea59d14adc18eae429a705a42544062269 GIT binary patch literal 30335 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 Qb!o#fZ6mGxBTkq81x1-yYybcN literal 0 HcmV?d00001 diff --git a/docs/bitstream-mtl.png b/docs/bitstream-mtl.png new file mode 100644 index 0000000000000000000000000000000000000000..56b03496964c4535e95652d294c99442d7e2517e GIT binary patch literal 29714 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 Wp654cAE5up=Bm8%rR)pF_x=qqrJia4 literal 0 HcmV?d00001