我正在研究使用 Luhn Algorithm 的代码战套路 验证信用卡号码。已经有了我的答案,它使用字符串转换来拆分数字,然后重新转换为整数,然后使用算法的其余部分。一切都很好,直到我用八进制数测试它。
代码开头为:
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.to_s
。
必须有一个地方让这些数字进入您的程序;用户提示,或通过读取文件或其他方式。您可能在某处有类似 n = user_input.to_i
的东西,迫使 ruby 将字符串转换为数字。确保在任何地方都将 n
视为字符串,并且前导零会保留。
关于ruby - 如何避免八进制、二进制等数字在字符串转换期间改变输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34817744/