Vendor/phpspreadsheet/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering.php
public static function BINTOOCT($x, $places = null)
    {
        $x = Functions::flattenSingleValue($x);
        $places = Functions::flattenSingleValue($places);

        if (is_bool($x)) {
            if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_OPENOFFICE) {
                $x = (int) $x;
            } else {
                return Functions::VALUE();
            }
        }
        if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_GNUMERIC) {
            $x = floor($x);
        }
        $x = (string) $x;
        if (strlen($x) > preg_match_all('/[01]/', $x, $out)) {
            return Functions::NAN();
        }
        if (strlen($x) > 10) {
            return Functions::NAN();
        } elseif (strlen($x) == 10) {
            //    Two's Complement
            return str_repeat('7', 7) . substr(strtoupper(decoct(bindec(substr($x, -9)))), -3);
        }
        $octVal = (string) decoct(bindec($x));

        return self::nbrConversionFormat($octVal, $places);
    }
public static function BINTOOCT($x, $places = null)
    {
        $x = Functions::flattenSingleValue($x);
        $places = Functions::flattenSingleValue($places);

        if (is_bool($x)) {
            if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_OPENOFFICE) {
                $x = (int) $x;
            } else {
                return Functions::VALUE();
            }
        }
        if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_GNUMERIC) {
            $x = floor($x);
        }
        $x = (string) $x;
        if (strlen($x) > preg_match_all('/[01]/', $x, $out)) {
            return Functions::NAN();
        }
        if (strlen($x) > 10) {
            return Functions::NAN();
        } elseif (strlen($x) == 10) {
            //    Two's Complement
            return str_repeat('7', 7) . substr(strtoupper(decoct(bindec(substr($x, -9)))), -3);
        }
        $octVal = (string) decoct(bindec($x));

        return self::nbrConversionFormat($octVal, $places);
    }
public static function BINTOOCT ( $ x , $ places = null ) { $ x = Functions :: flattenSingleValue ( $ x ) ; $ places = Functions :: flattenSingleValue ( $ places ) ; if ( is_bool ( $ x ) ) { if ( Functions :: getCompatibilityMode ( ) == Functions :: COMPATIBILITY_OPENOFFICE ) { $ x = ( int ) $ x ; } else { return Functions :: VALUE ( ) ; } } if ( Functions :: getCompatibilityMode ( ) == Functions :: COMPATIBILITY_GNUMERIC ) { $ x = floor ( $ x ) ; } $ x = ( string ) $ x ; if ( strlen ( $ x ) > preg_match_all ( '/[01]/' , $ x , $ out ) ) { return Functions :: NAN ( ) ; } if ( strlen ( $ x ) > 10 ) { return Functions :: NAN ( ) ; } elseif ( strlen ( $ x ) == 10 ) { //    Two's Complement return str_repeat ( '7' , 7 ) . substr ( strtoupper ( decoct ( bindec ( substr ( $ x , - 9 ) ) ) ) , - 3 ) ; } $ octVal = ( string ) decoct ( bindec ( $ x ) ) ; return self :: nbrConversionFormat ( $ octVal , $ places ) ; }
BINTOOCT.

Return a binary value as octal.

Excel Function:
BIN2OCT(x[,places])

@category Engineering Functions

@param string $x The binary number (as a string) that you want to convert. The number
cannot contain more than 10 characters (10 bits). The most significant
bit of number is the sign bit. The remaining 9 bits are magnitude bits.
Negative numbers are represented using two's-complement notation.
If number is not a valid binary number, or if number contains more than
10 characters (10 bits), BIN2OCT returns the #NUM! error value.
@param int $places The number of characters to use. If places is omitted, BIN2OCT uses the
minimum number of characters necessary. Places is useful for padding the
return value with leading 0s (zeros).
If places is not an integer, it is truncated.
If places is nonnumeric, BIN2OCT returns the #VALUE! error value.
If places is negative, BIN2OCT returns the #NUM! error value.

@return string
BINTOOCT .