me aburria y dije voy hacer una alternativa asi mas cortica xDD
Código: Seleccionar todo
{-
Funciónes: strToHex y unHex
Autor: Strup
Descripcion: strToHex: toma una cadena y la conversa a hexadecimal,unHex: toma una cadena hexadecimal y la conversa a texto normal
Data: 06/04/2014 10:30
Comentario:Es una alternativa a la obra de Taru Karttunen, cuyo codigo esta en http://hackage.haskell.org/package/hex-0.1.2/docs/src/Data-Hex.html#hex
-}
import Data.Char
strToHex :: String -> String
strToHex xs = foldr(\x -> \y -> [(['0'..'9']++['A'..'F'])!!div (ord x) 16,(['0'..'9']++['A'..'F'])!! mod (ord x) 16]++y)[] xs
unHex :: String -> String
unHex [] = []
unHex [_] = error "La longitud es impar"
unHex(y:x:xs)= chr(digitToInt(y)*16 + digitToInt(x)):unHex xs
Muestra:
Código: Seleccionar todo
"ghci>" :load "strup.hs"
[1 of 1] Compiling Strup ( strup.hs, interpreted )
Ok, modules loaded: Strup.
"ghci>" strToHex "Vaselina"
"566173656C696E61"
"ghci>" unHex "566173656C696E61"
"Vaselina"