什么是非法八进制数字?

我正在尝试制作一系列邮政编码。

array = [07001, 07920] 

返回:

 array = [07001, 07920] ^ from (irb):12 from :0 

从来没见过这个。 有任何变通方法吗?

Ruby正在将具有前导0的数字解释为八进制(基数为8)。 因此,数字8和9无效。

将邮政编码存储为字符串而不是数字可能更有意义(为避免在显示时用零填充),如下所示: array = ["07001", "07920"]

假设以0开头的数字采用八进制格式,就像假设以0x数字一样,采用hex格式。 八进制数字仅从07 ,因此9在八进制数字中根本不合法。

最简单的解决方法是简单地以十进制格式写入数字:八进制中的07001与十进制中的3585相同(我认为)。 或者你的意思是用十进制数字写? 然后,最简单的解决方法是07001前导零:无论如何070017001相同。

但是,您提到需要一组邮政编码。 在这种情况下,正确的解决方案是使用一个ZIP代码数组而不是整数数组,因为邮政编码不是整数,而是邮政编码。

您的数组是数字,因此前导零使其被解释为八进制(有效数字0-7)。 如果这些是邮政编码,并且前导零很重要,那么它们应该是字符串。