| Copyright | (c) 2020-2026 Emily Pillmore |
|---|---|
| License | BSD-style |
| Maintainer | Emily Pillmore <emilypi@cohomolo.gy> |
| Stability | stable |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.ByteString.Base16
Description
This module contains ByteString-valued combinators for
implementing the RFC 4648 specification of the Base16
encoding format. This includes lenient decoding variants, as well as
internal and external validation for canonicity.
Synopsis
- encodeBase16 :: ByteString -> Base16 Text
- encodeBase16' :: ByteString -> Base16 ByteString
- decodeBase16 :: Base16 ByteString -> ByteString
- decodeBase16' :: Base16 Text -> ByteString
- decodeBase16Untyped :: ByteString -> Either Text ByteString
- decodeBase16Lenient :: ByteString -> ByteString
- parseBase16 :: ByteString -> Either Text (Base16 ByteString)
Documentation
encodeBase16 :: ByteString -> Base16 Text Source #
Encode a ByteString value as Base16 Text
See: RFC-4648 section 8
Examples:
>>>encodeBase16 "Sun""53756e"
encodeBase16' :: ByteString -> Base16 ByteString Source #
Encode a ByteString value as a Base16 ByteString value
See: RFC-4648 section 8
Examples:
>>>encodeBase16' "Sun""53756e"
decodeBase16 :: Base16 ByteString -> ByteString Source #
Decode a Base16-encoded ByteString value.
See: RFC-4648 section 8
Examples:
>>>decodeBase16 $ assertBase16 "53756e""Sun"
decodeBase16' :: Base16 Text -> ByteString Source #
decodeBase16Untyped :: ByteString -> Either Text ByteString Source #
Decode an untyped Base16-encoded ByteString value with error-checking.
See: RFC-4648 section 8
Examples:
>>>decodeBase16Untyped "53756e"Right "Sun"
>>>decodeBase16Untyped "6x"Left "invalid character at offset: 1"
decodeBase16Lenient :: ByteString -> ByteString Source #
Decode a Base16-encoded ByteString value leniently, using a
strategy that never fails
N.B.: this is not RFC 4648-compliant
Examples:
>>>decodeBase16Lenient "53756e""Sun"
>>>decodeBase16Lenient "6x6x""f"
parseBase16 :: ByteString -> Either Text (Base16 ByteString) Source #
Validate an untyped Base16 value and retain its encoded representation.
Accepts even-length ASCII hexadecimal input, including upper-case and
mixed-case digits. Empty input is valid. The original input is preserved,
and errors match decodeBase16Untyped.
Examples:
>>>parseBase16 "666f6"Left "invalid bytestring size"
>>>parseBase16 "666F"Right "666F"
>>>fmap decodeBase16 (parseBase16 "666F")Right "fo"
>>>parseBase16 "6x"Left "invalid character at offset: 1"
Since: 1.0