Search code examples
phpoctal

Octal Numbers - what I might be missing to check if the input number recieved is of an Octal Format or Not?


Just learnt the basics of converting a Decimal Number to an Octal Number. Now for the reverse, I seem to have got the fact that any number whose last digit ending is either 8 or 9, cannot be an octal number. But, is there anything else that I would need to check or do to see if an input number is an Octal Number or not (apart from checking 8 or 9 in the last digit)?. - [basically, enquiring if I am missing a certain process]

Below is my code in PHP:

<?php 

$iOctal = 1423;
echo "What is the Decimal Value of the octal number $iOctal?"."<br/>";

$rg_Decimal = str_split($iOctal);
//print_r($rg_Decimal);

if (end($rg_Decimal) == 8 || end($rg_Decimal) == 9){
    echo "<b>Error:- </b>Unable to process your request as the input number format is not of the Octal Number Format. Please try again...";
}

if ($iOctal < 8 && $iOctal >= 0){
    echo "The Decimal Value of the octal number $iOctal is $iOctal.";
}
else{

    $iE = count($rg_Decimal);
    --$iE;
    $iDecimal = 0;

    for ($iA = 0; $iA < sizeof($rg_Decimal); ++$iA){

        $iDecimal += $rg_Decimal[$iA] * bcpow(8,$iE);
        --$iE;
    }
    echo "The Decimal Value of the octal number $iOctal is <b>$iDecimal</b>";
}

?>

It just so happened that during the testing, I had used an online resource. When I had given a particular number, it said that the number format was not octal. But the number did not have an 8 or 9 ending. Looking forward to your kind support.


Solution

  • You can use the builtin function octdect($number) from php. An example from http://php.net/manual/en/function.octdec.php , with the same question:

    <?php
    
    function is_octal($x) {
        return decoct(octdec($x)) == $x;
    }
    
    echo is_octal(077); // true
    echo is_octal(195); // false
    
    ?>