Math 函数
在线手册:中文  英文

octdec

(PHP 4, PHP 5)

octdec八进制转换为十进制

说明

number octdec ( string $octal_string )

返回 octal_string 参数所表示的八进制数的十进制等值。

参数

octal_string

要转换的八进制的字符串

返回值

octal_string 的十进制的表示

更新日志

版本 说明
4.1.0 该函数可以处理 integer 大数字,这种情况下,它会返回 float 类型。

范例

Example #1 octdec() 例子

<?php
echo octdec('77') . "\n";
echo 
octdec(decoct(45));
?>

以上例程会输出:

63
45

参见


Math 函数
在线手册:中文  英文

用户评论:

cubbo at quakenet dot php (2009-02-18 05:49:52)

Hi, this is an attempt to explain octdec(). 

There is one bug, if input is not octal, it doesn't return a proper decimal.

<?php 

$octal 
= (int) "764";

function 
octal_to_decimal($int)
    {                
        
$data integer;
        
$i = (strlen($int) - 1);    
        
$parse_int str_split($int);
        foreach(
$parse_int as $value)
            {
                
$data += (int)($value pow(8$i));
                
$i--;
            }        
        return 
$data;
    }
/**
*    explanation of the PHP function octdec()
*/
print octal_to_decimal($octal) . "<br />";

/**
*    the PHP function octdec()
*/
print octdec($octal);

?>

contato at andersonfraga dot net (2008-08-18 13:30:10)

Number is octal?

Simple and easy:

<?php

function is_octal($x) {
    return 
decoct(octdec($x)) == $x;
}

echo 
is_octal(077); // true
echo is_octal(195); // false

?>

Thanks
[]'s

harry at disgruntledgoat dot com (2007-03-27 03:03:29)

Calling the sticky bit "text" is not erroneous: On UNIX back in 1974, it instructed the operating system to retain the text segment of the program in swap space after the process exited. This speeded subsequent executions by allowing the kernel to make a single operation of moving the program from swap to real memory.

(2002-09-11 01:51:28)

The 'S' flag for Unix file access rights is badly computed in the above sample.
If the corresponding 'x' bit (exec) is not set, and the 's' bit (setgid/setuid/sticky) is set, then the flag should not be displayed as and uppercase 'S', but as a lower case 's'. Also the sticky bit (mainly used for folders with public right access rights such as /tmp to protect against deletion by non owner) is badly named ("text"?).

meheler at searchbc dot com (2001-10-25 20:03:38)

This function and decoct work great when working with file permissions. For example:

<?php
    $mode 
octdec('4750');
    
    
$user['suid']     = ($mode 04000);
    
$user['read']     = ($mode 00400);
    
$user['write']    = ($mode 00200);
    
$user['execute']  = ($mode 00100);
    
    
$group['sgid']    = ($mode 02000);
    
$group['read']    = ($mode 00040);
    
$group['write']   = ($mode 00020);
    
$group['execute'] = ($mode 00010);
    
    
$other['text']    = ($mode 01000);
    
$other['read']    = ($mode 00004);
    
$other['write']   = ($mode 00002);
    
$other['execute'] = ($mode 00001);
    
    
$attrs = array('-','-','-','-','-','-','-','-','-','-');
    
    if (
$system['dir']) $attrs[0] = 'd';
    
    if (
$user['read']) $attrs[1] = 'r';
    if (
$user['write']) $attrs[2] = 'w';
    if (
$user['execute']) $attrs[3] = 'x';
    if (
$user['suid']) $attrs[3] = 'S';
    
    if (
$group['read']) $attrs[4] = 'r';
    if (
$group['write']) $attrs[5] = 'w';
    if (
$group['execute']) $attrs[6] = 'x';
    if (
$group['sgid']) $attrs[6] = 'S';

    if (
$other['read']) $attrs[7] = 'r';
    if (
$other['write']) $attrs[8] = 'w';
    if (
$other['execute']) $attrs[9] = 'x';
    if (
$other['text']) $attrs[9] = 'T';
    
    echo 
'<pre>';
    echo 
'Mode Decimal: ' $mode "\n";
    echo 
'Mode Octal: ' decoct($mode) . "\n";
    echo 
'Mode String: ' implode('',$attrs)."\n";
    echo 
'</pre>';
?>

Outputs:

Mode Decimal: 2536
Mode Octal: 4750
Mode String: -rwSr-x---

-Mike

易百教程