我是 Haskell 的新手,我正在尝试在我的应用程序 ( Data.Digest.Pure.SHA
) 中使用纯 SHA1 实现和 JSON 库 ( AttoJSON
)。
AttoJSON 使用 Data.ByteString.Char8
字节串,SHA 使用 Data.ByteString.Lazy
bytestrings,我的应用程序中的一些字符串文字是 [Char]
.
Haskell Prime's wiki page on Char types似乎表明这仍然是在 Haskell 语言/前奏中解决的问题。
和this blogpost on unicode support列出了一些图书馆,但它已有几年历史了。
当前在这些类型之间进行转换的最佳方式是什么,有哪些权衡?
谢谢!
最佳答案
对于 Char8 和 Word8 之间的转换,您应该能够使用 toEnum/fromEnum 转换,因为它们代表相同的数据。
对于 Char 和 Strings,您可能可以使用 Data.ByteString.Char8.pack/unpack 或 map、toEnum 和 fromEnum 的某种组合,但如果您使用的是 ASCII 以外的任何内容,则会抛出数据。
对于不仅仅包含 ASCII 的字符串,一个流行的选择是 UTF8 编码。我喜欢这个 utf8-string 包:
http://hackage.haskell.org/packages/archive/utf8-string/0.3.6/doc/html/Codec-Binary-UTF8-String.html
关于string - [Char] 和 [Word8] 之间转换的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702325/