Libraryless. Click here for Pure Java version (15231L/90K).
persistable sclass HuffmanByteArray is BitIO { settable byte[] data; gettable int[] histogram; gettable HuffmanTreeMaker tm; gettable new HuffmanTree tree; // options settable bool startWithMagicCode; settable S magicCode = "HUF1"; *(byte[] *data) {} public void readWrite(BitHead head) { if (head.writeMode() && histogram == null) { histogram = byteHistogramArray(data); tm = new HuffmanTreeMaker; tm.importByteHistogram(histogram); tree = tm!; } // Part 1 (magic code) if (startWithMagicCode) head.exchangeASCII(magicCode); // Part 2 (Huffman character tree) tree.readWrite(head); // Part 3a (size) new VariableSizeUIntForBitHead().chunkSize(3).readWrite(head, -> data.length, size -> data = new byte[size]); //print("length " + data.length); // Part 3 (text) if (head.writeMode()) { fOr (b : data) tree.writeCharacter(b, head); } if (head.readMode()) { for i over data: { if (head.isEOF()) break; data[i] = toUByte(tree.readSymbol(head)); } } } byte[] get() { ret data; } // update selfType public selfType fromByteArray(byte[] data) { BitIO.super.fromByteArray(data); this; } public selfType load(byte[] data) { BitIO.super.load(data); this; } }
Began life as a copy of #1035674
download show line numbers debug dex old transpilations
Travelled to 2 computer(s): mqqgnosmbjvj, onxytkatvevr
No comments. add comment
Snippet ID: | #1035731 |
Snippet name: | HuffmanByteArray - Huffman codec [OK] |
Eternal ID of this version: | #1035731/11 |
Text MD5: | 53e855445a153fb8f77787f862df7555 |
Transpilation MD5: | e9e4978b3f68996a4e9f87e3509db72d |
Author: | stefan |
Category: | javax / compression |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2022-07-15 20:56:00 |
Source code size: | 1385 bytes / 52 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 150 / 278 |
Version history: | 10 change(s) |
Referenced in: | [show references] |