module Blockchain.Data.Util
( byteString2Integer
, bytes2Integer
, integer2Bytes
) where
import Data.Bits
import qualified Data.ByteString as B
import Data.Word
byteString2Integer :: B.ByteString -> Integer
byteString2Integer x = bytes2Integer $ B.unpack x
bytes2Integer :: [Word8] -> Integer
bytes2Integer [] = 0
bytes2Integer (byte:rest) =
fromIntegral byte `shift` (8 * length rest) + bytes2Integer rest
integer2Bytes :: Integer -> [Word8]
integer2Bytes 0 = []
integer2Bytes x = integer2Bytes (x `shiftR` 8) ++ [fromInteger (x .&. 255)]