【发布时间】:2018-01-25 20:16:30
【问题描述】:
我需要一个程序,我可以在其中输入一个二进制系统数字,然后以十进制为基数将相同的数字返回给我。
binToDec :: Integer -> Integer
binToDec 1110101011111111000000111100001010101011110010000001 = 4134096010394753
binToDec 111111111111111111111111111111111111111111111111111111111111111 = 9223372036854775807
我还需要在 5 秒内编译完上面的示例。
我已经做到了,但问题是它从整数列表开始:
binToDec l = sum $ map (2^) $ findIndices (==1) $ reverse l
【问题讨论】:
-
您不应将
Integer用于此“二进制数”。字符串输入或布尔值列表会更合适。 -
需要在 5 秒内编译上述示例?这听起来非常可疑,就像您滥用编译器进行转换一样。不要那样做。 — 如果你真的需要在 Haskell 源代码中写出二进制文件,只需使用
-XBinaryLiterals扩展名。
标签: haskell functional-programming binary