计算由二进制

时间:2017-10-22 15:59:13

标签: haskell

我的[[Int]]值为[[0,1,1,0,0,0,0,1],[0,1,1,0,0,0,1,0]]

我需要将其转换为ascii表示,例如“ab”。

有人可以给我一些关于如何在Haskell中做这件事的指示吗?

2 个答案:

答案 0 :(得分:1)

你可以:

  1. 编写一个将整数列表(二进制)转换为基数10整数(Int)
  2. 的函数
  3. 使用模块Data.Char
  4. 中的chr撰写该功能
  5. 使用map应用这些组合函数(将二进制转换为基数10然后转换为字符)以映射二进制代表列表并将其转换为字符列表 - 这是一个字符串。

答案 1 :(得分:1)

您可以对列表执行foldl计算其整数值,然后使用chr将整数解释为unicode代码点(其中ascii是子集)。

λ> import Data.Char (chr)
λ> fmap (chr . foldl (\x y -> 2*x + y) 0) [[0,1,1,0,0,0,0,1],[0,1,1,0,0,0,1,0]]
"ab"