Please use the Bases Package.
Base85 is a Swift library to convert data from Base-85 and vice versa. The API was designed to easily replace the Foundation's built-in Base-64 encoding API.
You can install this package through Swift Package Manager. Either add this to your Package.swift
:
dependencies: [
.package(url: "https://github.com/pambrozy/Base85", .upToNextMajor(from: "1.0.0")),
...
],
Or, by using Xcode:
- Select File → Swift Packages → Add Package Dependency...
- Enter package URL:
https://github.com/pambrozy/Base85
To encode data use the following functions:
let encodedData = data.base85EncodedData()
let encodedString = data.base85EncodedString()
You can also specify encoding options and character set (the default is RFC 1924, see all):
data.base85EncodedData(options: .lineLength64Characters,
encoding: .z85)
data.base85EncodedString(options: [.endLineWithCarriageReturn,
.lineLength76Characters],
encoding: .adobeAscii85)
In order to decode data:
let fromString = Data(base85Encoded: "JQEepgAAAABM9s8PUbctjl7/Wxk=")
let fromData = Data(base85Encoded: encodedData,
options: .ignoreUnknownCharacters,
encoding: .rfc1924)
You can also use this library to encode and decode raw data from and into JSON:
let encoder = JSONEncoder()
encoder.dataEncodingStrategy = .base85
let decoder = JSONDecoder()
decoder.dataDecodingStrategy = .base85(encoding: .btoa)
To encode data:
// The type of `data` is [UInt8]
let encoded = Base85.encode(data, encoding: .rfc1924)
To decode data:
// The type of `data` is [UInt8]
let decoded = Base85.decode(data, encoding: .rfc1924)
This package comes with some character sets build in. They are referred in code as Base85.Encoding
. The default encoding is RFC 1924.
Built in character sets:
Encoding | ascii | btoa | Ascii85 (Adobe) |
RFC 1924 | Z85 |
---|---|---|---|---|---|
Characters | ! - u |
! - u |
! - u |
0 - ~ |
0 - # |
Beginning of string | - | - | <~ |
- | - |
End of string | - | x |
~> |
- | - |
Four zeros | - | z |
z |
- | - |
Four spaces | - | y |
- | - |
You can customize each character set by using this static method:
let customizedBtoa = Base85.Encoding.customized(baseEncoding: .btoa,
startDelimeter: nil,
endDelimeter: "x",
representFourZerosAs: "z",
representFourSpacesAs: nil)
You can also create a fully custom character set, by using the following method:
Base85.Encoding.custom(characters: [Character],
startDelimeter: String?,
endDelimeter: String?,
representFourZerosAs zeros: Character?,
representFourSpacesAs spaces: Character?)
- The smallest character value cannot be smaller than 33 (ASCII "!").
- The number of characters should be 85.
- Test Foundation extensions
- Test customized and custom encoding
- Make
Base85.encode
andBase85.decode
throw an error instead of returning nil in case of failure
This package is released under The MIT License. See LICENSE for details.