Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Mathematical Functions : octdec

octdec

Octal to decimal (PHP 4, PHP 5)
number octdec ( string octal_string )

Example 1154. octdec() example

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

The above example will output:

63
45

Related Examples ( Source code ) » octdec



Code Examples / Notes » octdec

meheler

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


11-sep-2002 09: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"?).


harry

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.

Change Language


Follow Navioo On Twitter
abs
acos
acosh
asin
asinh
atan2
atan
atanh
base_convert
bindec
ceil
cos
cosh
decbin
dechex
decoct
deg2rad
exp
expm1
floor
fmod
getrandmax
hexdec
hypot
is_finite
is_infinite
is_nan
lcg_value
log10
log1p
log
max
min
mt_getrandmax
mt_rand
mt_srand
octdec
pi
pow
rad2deg
rand
round
sin
sinh
sqrt
srand
tan
tanh
eXTReMe Tracker