我需要使用ascii 7位将二进制编码操作为作为输入的简单字符串的'0'
和'1'
。
对于编码,我使用了函数Data.ByteString.Lazy.Builder.string7 :: String -> Builder
但是,我还没有找到将生成的Builder对象转换回'0'
和'1'
字符串的方法。可能吗 ?还有另一种方式吗?
附属问题:如果我想用十六进制形式作为文本?
答案 0 :(得分:1)
unpackChars
中有Data.ByteString.Lazy.Internal
个功能。 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) . BS.unpack
代替unpackChars
,但unpackChars
可能更快。
另外,正如Michael Snoyman在下面评论过的那样,您可以使用Data.ByteString.Char8
或其懒惰版本,然后您将获得正确的转换。