Ongeldige octale cijferfout

Ongeldige achtcijferige fout in Ruby, hoe kan ik dat passeren? Ik heb een nummer, 0962833 , dat ik naar een API moet verzenden, maar ik kan het niet verzenden omdat ik deze ongeldige octale cijferfout krijg.

Daar heb ik een beetje werk voor nodig zonder dat getal in een string te veranderen, de nul kan niet worden verwijderd, het is een must.

4
Weet je zeker dat 0962833 echt een getal is in plaats van een tekenreeks, '0962833' , die toevallig bestaat uit cijfers? Zipcodes lijken bijvoorbeeld vaak op getallen, maar dat zijn ze niet, het zijn snaren.
toegevoegd de auteur mu is too short, de bron
Een leidende 0 betekent dat de waarde zal worden geïnterpreteerd als octale representatie. Waarom kan je het niet verwijderen?
toegevoegd de auteur Oliver Charlesworth, de bron

2 antwoord

Octale getallen gebruiken de cijfers 0 tot 7. Misschien kan de fout het cijfer 9 zijn en cijfer 8 in uw nummer. Als u het getal '962833' wilt doorgeven, probeer het dan eerst om te zetten naar een correct octaalnummer met een online converter. Voeg vervolgens de leidende '0' toe en geef deze door aan uw functie.

5
toegevoegd
Er is geen online converter nodig: "0962833" .to_i (10) .to_s (8) => "3530421" :-)
toegevoegd de auteur Michael Kohl, de bron
Jullie hebben gelijk, het was geen nummer probleem omdat ik het veranderde in een string, het probleem was met mijn curl commando. Bedankt.
toegevoegd de auteur Paz Aricha, de bron

0962833 is an octal number because of the leading zero, so you can't have digits higher than 7. If you need the leading zero, why can't you turn it into a string? Leading zeroes have no mathematical significance, so why should there be a way to represent them in a numerical type?

4
toegevoegd