Skip to content

Repository files navigation

ByteRunLengthCoder

ByteRunLengthCoder is a Swift library to perform run-length encoding and decoding on data. It provides efficient and easy-to-use methods for compressing and decompressing data.

Usage

First, import the ByteRunLengthCoder module in your Swift file:

import ByteRunLengthCoder

You can use the encode and decode methods to perform run-length encoding and decoding respectively:

let input: [UInt8] = [0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05]
let encoded = ByteRunLengthCoder.encode(data: input)
// encoded == [0x02, 0x01, 0x02, 0x02, 0x80, 0x03, 0x81, 0x04, 0x82, 0x05]

let decoded = ByteRunLengthCoder.decode(data: encoded)
// decoded == [0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05]

Conversion Extensions

ByteRunLengthCoder also includes convenience extensions for [UInt8] arrays to convert to and from Data and NSData:

let data: Data = Data([1, 1, 1, 2, 2, 3])
let byteArr = [UInt8](data: data)
let backToData = byteArr.toData()

let nsdata: NSData = NSData(bytes: [1, 1, 1, 2, 2, 3], length: 6)
let byteArrFromNSData = [UInt8](nsdata: nsdata)
let backToNSData = byteArrFromNSData.toNSData()

Unit Tests

ByteRunLengthCoder includes unit tests for the encode and decode functions. Run these tests to ensure the library functions as expected:

let test = ByteRunLengthCoderTests()
test.testEncode()
test.testDecode()

License

This project is licensed under the MIT License.

About

An encoder and decoder for Run Length Compression used in ICNS files

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages