从 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
有一个实例。但我想,它有性能损失。
我正在使用 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
有一个实例。但我想,它有性能损失。