cma*_*232 11 string unicode haskell utf-8
我是Haskell的新手,我正在尝试在我的app(Data.Digest.Pure.SHA)中使用一个带有JSON库(AttoJSON)的纯SHA1实现.
AttoJSON使用Data.ByteString.Char8字节Data.ByteString.Lazy串,SHA使用字节串,我的应用程序中的一些字符串文字是[Char].
Haskell Prime关于Char类型的维基页面似乎表明这仍然是在Haskell语言/ Prelude中得到解决的问题.
而我这篇文章的Unicode支持列出了一些图书馆,但它的一对夫妇岁.
目前在这些类型之间进行转换的最佳方法是什么,以及有哪些权衡?
谢谢!
这是我所拥有的,没有使用 ByteString 的内部函数。
import Data.ByteString as S (ByteString, unpack)
import Data.ByteString.Char8 as C8 (pack)
import Data.Char (chr)
strToBS :: String -> S.ByteString
strToBS = C8.pack
bsToStr :: S.ByteString -> String
bsToStr = map (chr . fromEnum) . S.unpack
Run Code Online (Sandbox Code Playgroud)
S.unpack在 ByteString 上给我们 [Word8],我们应用(chr . fromEnum)它将任何 Enum 类型转换为字符。通过将它们组合在一起,我们就得到了我们想要的功能!
Char8 和普通字节串是相同的东西,只是根据导入的模块具有不同的接口。主要是您想要在严格字节串和惰性字节串之间进行转换,为此您使用toChunks和fromChunks。
要将字符放入字节串中,请使用pack.
另请注意,如果您的字符包含以 UTF-8 表示的多字节表示的代码点,则会出现问题。
| 归档时间: |
|
| 查看次数: |
7444 次 |
| 最近记录: |