tanszek:oktatas:techcomm:lzw_coding
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tanszek:oktatas:techcomm:lzw_coding [2024/10/07 08:25] – [Decoding LZW] knehez | tanszek:oktatas:techcomm:lzw_coding [2024/11/19 07:54] (current) – knehez | ||
---|---|---|---|
Line 10: | Line 10: | ||
3. **Add new substrings** to the dictionary and output the dictionary index for the current substring when it can no longer be extended by the next character in the input. | 3. **Add new substrings** to the dictionary and output the dictionary index for the current substring when it can no longer be extended by the next character in the input. | ||
+ | ---- | ||
=== Example of LZW Compression === | === Example of LZW Compression === | ||
Line 90: | Line 91: | ||
Let’s go through the decoding process of the encoded sequence '' | Let’s go through the decoding process of the encoded sequence '' | ||
- | 1. **65**: Look up in the dictionary. It maps to `" | + | 1.) **65**: Look up in the dictionary. It maps to `" |
- | **Decoded string so far**: `" | + | * **Decoded string so far**: `" |
- | 2. **66**: Look up in the dictionary. It maps to `" | + | 2.) **66**: Look up in the dictionary. It maps to `" |
- | **Decoded string so far**: `" | + | * **Decoded string so far**: `" |
- | 3. **256**: Look up in the dictionary. It maps to `" | + | 3.) **256**: Look up in the dictionary. It maps to `" |
- | **Decoded string so far**: `" | + | * **Decoded string so far**: `" |
- | 4. **258**: Look up in the dictionary. It maps to `" | + | 4.) **258**: Look up in the dictionary. It maps to `" |
- | **Decoded string so far**: `" | + | * **Decoded string so far**: `" |
The original string '' | The original string '' | ||
Line 123: | Line 124: | ||
+ | C implementation of LZW encoding: | ||
+ | <sxh c> | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | #define MAX_sxhS 100 | ||
+ | |||
+ | char sxhTable[MAX_sxhS][10] = {" | ||
+ | |||
+ | int tableElements = 5; | ||
+ | |||
+ | int isInsxhTable(char *s) | ||
+ | { | ||
+ | for(int i = 0; i < tableElements; | ||
+ | { | ||
+ | if(strcmp(sxhTable[i], | ||
+ | { | ||
+ | return i; | ||
+ | } | ||
+ | } | ||
+ | return -1; | ||
+ | } | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | char text[] = " | ||
+ | char *p = text; | ||
+ | int bufferEnd = 1; | ||
+ | |||
+ | int lastFoundIndex = -1; | ||
+ | while(*p != ' | ||
+ | { | ||
+ | char subStr[10]; | ||
+ | strncpy(subStr, | ||
+ | subStr[bufferEnd] = ' | ||
+ | int foundIndex = isInsxhTable(subStr); | ||
+ | if(foundIndex != -1) | ||
+ | { | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | p += strlen(subStr) - 1; | ||
+ | bufferEnd = 1; | ||
+ | strcpy(sxhTable[tableElements++], | ||
+ | printf(" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ |
tanszek/oktatas/techcomm/lzw_coding.1728289522.txt.gz · Last modified: 2024/10/07 08:25 by knehez