-- Reads hex digits from input, writes binaries to output
-- e.g. "CAFEBABE" -> "\xca\xfe\xba\xba\xbe"
import System.IO
import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString.Lazy.Char8 as C
import Data.Word
pairwise :: [a] → [[a]]
pairwise (x:y:rest) = [x,y] : pairwise rest
pairwise _ = []
toByte :: [Char] → Word8
toByte s = read ("0x" ⊕ s)
convert :: [Char] → [Word8]
convert = (map toByte)∘pairwise
goodChars :: String → String
goodChars s = filter (λc → any (λx → x ≡ c) "0123456789ABCDEFabcdef") s
toBin = L.pack∘convert∘goodChars∘C.unpack
main = do
hSetBinaryMode stdout True
hexes ← L.getContents
L.hPut stdout $ toBin hexes
Page Summary
Active Entries
Style Credit
- Style: Neutral Good for Practicality by
Expand Cut Tags
No cut tags