module Data.HexString where import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BS8 import qualified Data.ByteString.Base16 as BS16 import qualified Data.Text as T import qualified Data.Text.Encoding as TE -- | Data type representing a HexString. data HexString = HexString !BS.ByteString deriving ( Show, Eq, Ord ) -- | Access to the raw binary data this HexString represents getBinary :: HexString -> BS.ByteString getBinary (HexString bs) = bs -- | Create new HexString based on raw binary data setBinary :: BS.ByteString -> HexString setBinary = HexString -- | Converts `BS.ByteString` to a `HexString` decodeByteString :: BS.ByteString -> HexString decodeByteString = HexString . fst . BS16.decode -- | Converts a `T.Text` representation to a `HexString` decodeText :: T.Text -> HexString decodeText = decodeByteString . TE.encodeUtf8 -- | Converts a `String` representation to a `HexString` decodeString :: String -> HexString decodeString = decodeByteString . BS8.pack -- | Converts a `HexString` to a `BS.ByteString` encodeByteString :: HexString -> BS.ByteString encodeByteString = BS16.encode . getBinary -- | Converts a `HexString` to a `T.Text` representation encodeText :: HexString -> T.Text encodeText = TE.decodeUtf8 . encodeByteString -- | Converts a `HexString` to a `String` representation encodeString :: HexString -> String encodeString = BS8.unpack . encodeByteString