【发布时间】:2018-04-28 02:42:16
【问题描述】:
我需要在 Haskell 中将一串字符转换为二进制数列表。我已经编写了两个函数来做到这一点,但我不知道如何将它们组合成一个。到目前为止我有
dec[]=[]
dec(x:xs) = ord(x): dec xs
将列表中的每个字符转换为十进制数。下一个函数
bin 0 = [0]
bin n| n `mod` 2 == 1 = bin (n `div` 2) ++ [1]
| n `mod` 2 == 0 = bin (n `div` 2) ++ [0]
将十进制数转换为等效的二进制数。我不确定如何将第二个函数应用于列表中的每个元素,以便将每个 char 转换为其等效的二进制。我尝试使用where 子句:
where n = dec(x:xs) = ord(x): dec xs
但这是无效的,因为同一行上有两个等号。我怎样才能实现正确的功能?
【问题讨论】:
-
你能举一个你想要的输入输出的例子(或几个例子)吗?
-
@DanielWagner 假设我给函数字符串“ab0”我希望它输出 [0,1,1,0,0,0,0,1,0,1,1,0 ,0,0,1,0,0,0,1,1,0,0,0,0]
标签: string haskell functional-programming binary