Haskell 如何从懒惰的.Builder获取字符串?
我需要使用ascii 7位操作作为输入的简单字符串的二进制编码,如Haskell 如何从懒惰的.Builder获取字符串?,haskell,bytestring,Haskell,Bytestring,我需要使用ascii 7位操作作为输入的简单字符串的二进制编码,如'0'和'1' 对于编码,我使用了函数Data.ByteString.Lazy.Builder.string7::String->Builder 但是,我还没有找到将生成的生成器对象转换回'0'和'1'字符串的方法。可能吗?还有别的办法吗 附属问题:如果我想要它以十六进制形式作为文本?在Data.ByteString.Lazy.Internal中有一个unpacchars函数。Data.ByteString.Internal中还有
'0'
和'1'
对于编码,我使用了函数Data.ByteString.Lazy.Builder.string7::String->Builder
但是,我还没有找到将生成的生成器对象转换回'0'
和'1'
字符串的方法。可能吗?还有别的办法吗
附属问题:如果我想要它以十六进制形式作为文本?在
Data.ByteString.Lazy.Internal
中有一个unpacchars
函数。Data.ByteString.Internal
中还有一个非惰性的对应项
import qualified Data.ByteString.Lazy.Builder as Build
import qualified Data.ByteString.Lazy as BS
import qualified Data.ByteString.Lazy.Internal as BSI
--> BSI.unpackChars $ Build.toLazyByteString $ Build.string7 "010101"
--"010101"
您还可以使用map(chr.fromIntegral)。b.解包
而不是解包
,但是解包
可能更快
或者,正如Michael Snoyman在下面评论的那样,您可以使用Data.ByteString.Char8
或其惰性版本,您将获得正确的转换开始。我建议改用。