ruby - 如何避免八进制、二进制等数字在字符串转换期间改变输出

标签 ruby integer octal

我正在研究使用 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/

相关文章:

php - 如何进行 XMLRPC::Client 身份验证

mysql - 如何在使用1次后禁用提交按钮

ruby-on-rails - 在 Selenium 集成测试期间无法发送 TAB 键

c - 如何将带空格的字符串解析为整数

c++ - 创建一个使用 4 位编码表示整数 0 -9 的文件

c - 在 C 中以八进制表示法打印 ASCII 字符串

ruby-on-rails - 我可以使用 link_to 链接图像和文本吗

mysql - 将 SQL 的结果截断为整数值

lua - 比较Lua中的两个数字时计算位数的差异

python - 使用Python的stat函数高效获取owner、group等权限