Copyright | (c) 2012 Magnus Therning |
---|---|
License | BSD3 |
Safe Haskell | None |
Language | Haskell98 |
Implemention of base 16 encoding (hex encoding) as specified in RFC 4648 (http://tools.ietf.org/html/rfc4648).
- b16_enc :: ByteString -> ByteString
- b16_dec :: ByteString -> Either (ByteString, ByteString) (ByteString, ByteString)
- encode :: ByteString -> ByteString
- decode :: ByteString -> Either (ByteString, ByteString) ByteString
Documentation
:: ByteString | |
-> ByteString | The encoded string |
Encoding function.
This function, unlike some other encoding functions in the library, simply cannot fail. Double the length of the input string is allocated for the encoded data, which is guaranteed to hold the result.
>>>
b16_enc $ Data.ByteString.pack [0x00]
"00"
>>>
b16_enc $ Data.ByteString.Char8.pack "foobar"
"666F6F626172"
b16_dec :: ByteString -> Either (ByteString, ByteString) (ByteString, ByteString) Source
Decoding function.
The returned value on success is Right (<decoded part>, <undecoded
part>)
(the undecoded part is either a empty or a single byte), and on
failure it's Left (<decoded part>, <undecodable part>)
. Space equal to
the length of the input string is allocated, which is more than enough to
hold the decoded data.
>>>
b16_dec $ Data.ByteString.Char8.pack "00"
Right ("\NUL","")
>>>
b16_dec $ Data.ByteString.Char8.pack "666F6F626172"
Right ("foobar","")
>>>
b16_dec $ Data.ByteString.Char8.pack "666F6F62617"
Right ("fooba","7")>>>
b16_dec $ Data.ByteString.Char8.pack "666F6F62617g"
Left ("fooba","g")
encode :: ByteString -> ByteString Source
A synonym for b16_enc
.
decode :: ByteString -> Either (ByteString, ByteString) ByteString Source
A synonum for b16_dec
.