Функция lzw.NewWriter
Функция lzw.NewWriter создает новый LZW-кодировщик,
который сжимает данные и записывает их в указанный выходной поток.
Первым параметром функция принимает интерфейс io.Writer,
в который будут записаны сжатые данные. Вторым параметром
указывается порядок следования бит - lzw.LSB или
lzw.MSB. Третьим параметром передается количество
бит для кодов - значение от 8 до 16.
Синтаксис
lzw.NewWriter(w io.Writer, order lzw.Order, litWidth int) *lzw.Writer
Пример
Давайте создадим LZW-кодировщик и сожмем строку "abcde":
package main
import (
"bytes"
"compress/lzw"
"fmt"
)
func main() {
var buf bytes.Buffer
w := lzw.NewWriter(&buf, lzw.LSB, 8)
w.Write([]byte("abcde"))
w.Close()
fmt.Printf("%q", buf.Bytes())
}
Результат выполнения кода:
"\x00\x84\x86\x82\x00"
Пример
Давайте выполним сжатие с использованием порядка бит MSB:
package main
import (
"bytes"
"compress/lzw"
"fmt"
)
func main() {
var buf bytes.Buffer
w := lzw.NewWriter(&buf, lzw.MSB, 8)
w.Write([]byte("abcde"))
w.Close()
fmt.Printf("%q", buf.Bytes())
}
Результат выполнения кода:
"\x00\x11\x31\x41\x00"
Пример
Давайте сожмем числовые данные и выведем размер до и после сжатия:
package main
import (
"bytes"
"compress/lzw"
"fmt"
)
func main() {
data := []byte("12345")
var buf bytes.Buffer
w := lzw.NewWriter(&buf, lzw.LSB, 9)
w.Write(data)
w.Close()
fmt.Printf("Original size: %d, Compressed size: %d",
len(data), buf.Len())
}
Результат выполнения кода:
"Original size: 5, Compressed size: 7"
Смотрите также
-
функцию
lzw.NewReader,
которая создает LZW-декодер для распаковки данных -
функцию
gzip.NewWriter,
которая создает gzip-кодировщик для сжатия данных -
функцию
zlib.NewWriter,
которая создает zlib-кодировщик для сжатия данных -
функцию
flate.NewWriter,
которая создает flate-кодировщик для сжатия данных