Estoy implementando un protocolo que dicta que una cadena que representa una contraseña debe ser serializada en un campo de 10 bytes de longitud fija. Estoy usando Data.Cereal para realizar esta tarea. Aquí está mi más reciente ir en él:serializar una cadena con Data.Cereal o Data.Binary
padText :: Int -> Text -> Text
padText fieldLen = T.justifyLeft fieldLen '\NUL'
putPassword :: Putter Password
putPassword = put . TE.encodeUtf8 . padText 10
poner en ByteString antepone un adicional trozo de 8 bytes en la parte frontal de lo que es la codificación de decisiones:
runPut $ putPassword "Friend"
resultado en:
"\NUL\NUL\NUL\NUL\NUL\NUL\NUL\nFriend\NUL\NUL\NUL\NUL"
No quiero el trozo extra. ¿Por qué se pone así?
¿Alguien sabe cómo serializar solo los 10 bytes originales?