从 Haskell 中的二进制文件解析字符串

Parsing Strings from a Binary File in Haskell

我正在使用 Data.Binary.Get monad 从 Haskell 中的文件中读取数据。我将如何将从 getWord32** 获取的一些 Word32 转换为 [Char] 或 String?

我试过将 Word32 分成四个八位字节并以这种方式进行转换,但我在转换工作时遇到了问题。我如何最好地将 Word32 转换为字符串(假设有四个字符)。

utf8-light 有一个名为 w2c 的函数,其类型为:

w2c ::Word32 -> Char

你可以看到它是如何实现的:

w2c :: Word32 -> Char
{-# INLINE w2c #-}
#if defined(__GLASGOW_HASKELL__)
w2c (W32# w) = C#(chr#(word2Int# w))
#else
w2c = unsafeChr . fromIntegral
#endif

你可以围绕它写一个包装器:

w2s :: Word32 -> String
w2s xs = [xs]

或者,您也可以使用 show 函数,因为 Word32 有一个实例。但我想,它有性能损失。