首页 > 解决方案 > Haskell返回十六进制值的列表

问题描述

我正在尝试定义函数“decToHex”,它返回与给定数字的十六进制值相对应的字符列表。例如,1128 = ['4','6','8']

这是我的功能

decToHex :: Int -> [Char]
list = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]
listHexa = []
decToHex x
  | x < 16 = list !! x
  | otherwise = decToHex (x `div` 16) : ((list !! (x `mod` 16)) : listHexa)

但我得到这个错误:

• Couldn't match type ‘[Char]’ with ‘Char’
  Expected type: [Char]
    Actual type: [[Char]]
• In the expression:
    decToHex (x `div` 16) : ((list !! (x `mod` 16)) : listHexa)

我错过了什么?

标签: haskell

解决方案


list的类型[String],因为每个字母都有一个StringChar相反,通过用单引号替换双引号使其成为列表。


推荐阅读