2014-10-20 67 views
1

我想知道为什么当你定义一个十六进制,然后使用公式 “ord x - ord'a'+10”为什么使用了+10?如果这个+10没有被使用,它会给你什么?haskell中的十六进制

+5

的十六进制数字'了'是10 – 2014-10-20 19:08:28

+4

请考虑使用'Data.Char .digitToInt' - 也适用于大写的十六进制数字!除非你想'A'代表-22,当然,在这种情况下继续:-) – yatima2975 2014-10-20 19:22:59

回答

6

没有+ 10,你的字母映射A到F的值0到5,而不是10到15

2

ord x - (ord 'a')为您提供了字符'a'为0的排名'b' 1等等 这个排名转换成你需要添加10的十六进制值,所以a => 10,b => 11

你想'a'为10,因为在9(编码为'9')来到10(编码为'a')。