octdec

(PHP 3, PHP 4, PHP 5)

octdec -- 八进制转换为十进制

说明

number octdec ( string octal_string )

返回 octal_string 参数所表示的八进制数的十进制等值。可转换的最大的数值为 17777777777 或十进制的 2147483647。PHP 4.1.0 开始,该函数可以处理大数字,这种情况下,它会返回 float 类型。

例子 1. octdec() 范例

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

上例将输出:

63
45

参见 decoct()bindec()hexdec()base_convert().。


add a note add a note User Contributed Notes
11-Sep-2002 04:51
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
26-Oct-2001 11:03
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