【发布时间】:2016-04-21 10:35:02
【问题描述】:
我正在开发一个使用 Luhn Algorithm 的 codewars kata 验证信用卡号码。已经有了我的答案,它使用字符串转换来拆分数字,然后重新转换为整数,然后使用算法的其余部分。一切都很好,直到我用八进制数测试它。
代码开头为:
def validate(n)
n.to_s.split("") #n = 7867 gives me ["7","8","6","7"], which is fine
n.to_s.split("") #n = 0776 gives me ["5","1","0], when I need ["0","7","7","6"]
n.to_s.split("") #n = 0100 gives me ["6", "4"] when I need ["0","1","0","0"]
#other code here
end
应该在插入n 的任何地方调用该方法。
如何防止八进制、二进制或十六进制等数字进行这样的转换?有没有办法让数字保持原样以便我可以使用它们?
【问题讨论】:
-
你从哪里得到
n的值? -
n就是插入方法中的任何数字。def validate(n) -
我的意思是你如何得到八进制数?您是否在程序中输入数字文字?
-
我只是随机选择数字插入以测试我的程序。每当我输入带有
0的数字时,我都不知道发生了什么,直到我插入0905并且错误显示为invalid octal number,我了解到八进制甚至是一回事。