Advertisement
CleverWebAdmin

PHP bitwise

Aug 6th, 2013
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.41 KB | None | 0 0
  1. <?php
  2. /**
  3.  * Copyright Nicholas Jordon - All Rights Reserved
  4.  * License: GNU LGPL v3 or later
  5.  * License URL: http://www.gnu.org/licenses/lgpl-3.0.html
  6.  */
  7. class bitwise {
  8.         private $xchng = array(
  9.                 'bit' => array(
  10.                         '0000',  '0001',
  11.                         '0010',  '0011',
  12.                         '0100',  '0101',
  13.                         '0110',  '0111',
  14.                         '1000',  '1001',
  15.                         '1010',  '1011',
  16.                         '1100',  '1101',
  17.                         '1110',  '1111'
  18.                 ),
  19.                 'val' => array(
  20.                         '0000' =>  '0',  '0001' =>  '1',
  21.                         '0010' =>  '2',  '0011' =>  '3',
  22.                         '0100' =>  '4',  '0101' =>  '5',
  23.                         '0110' =>  '6',  '0111' =>  '7',
  24.                         '1000' =>  '8',  '1001' =>  '9',
  25.                         '1010' => '10',  '1011' => '11',
  26.                         '1100' => '12',  '1101' => '13',
  27.                         '1110' => '14',  '1111' => '15'
  28.                 )
  29.         );
  30.  
  31.         public function create_bit_str($int_input){
  32.                 $xchng = $this->xchng['bit'];
  33.                 // convert value to bits
  34.                 $vals = str_split((string) $int_input,2); // cast (str) incase they do (int)
  35.                 $values = '';
  36.                 foreach ($vals as $val) {
  37.                         $val = (int) $val;
  38.                         if(isset($xchng[$val])){
  39.                                 $values .= $xchng[$val];
  40.                         }else{
  41.                                 return FALSE;
  42.                         }
  43.                 }
  44.                 return $values;
  45.         }
  46.  
  47.         public function create_val_str($str_input){
  48.                 $xchng = $this->xchng['val'];
  49.                 // convert bits to value
  50.                 $bits = str_split((string) $str_input,4); // cast (str) incase they do (int)
  51.                 $r_str = '';
  52.                 foreach ($bits as $bit) {
  53.                         $bit = $bit;
  54.                         if(isset($xchng[$bit])){
  55.                                 $r_str .= $xchng[$bit];
  56.                         }else{
  57.                                 return FALSE;
  58.                         }
  59.                 }
  60.                 return $r_str;
  61.         }
  62. }
  63.  
  64.  
  65. // testing script
  66. $bit = new bitwise;
  67.  
  68. $range = range(0,15);
  69. foreach ($range as $num) {
  70.     foreach ($range as $cnum) {
  71.         $org = $bit->create_bit_str($num & $cnum);
  72.         $r1  = $bit->create_bit_str($num);
  73.         $r2  = $bit->create_bit_str($cnum);
  74.         echo ((string) $num).' & '.$cnum.' or '.var_export($r1,1).' & '.var_export($r2,1).' = '.var_export($org,1).' or '.var_export($bit->create_val_str($org),1).PHP_EOL;
  75.         $org = $bit->create_bit_str($num | $cnum);
  76.         echo ((string) $num).' | '.$cnum.' or '.var_export($r1,1).' | '.var_export($r2,1).' = '.var_export($org,1).' or '.var_export($bit->create_val_str($org),1).PHP_EOL;
  77.         $org = $bit->create_bit_str($num ^ $cnum);
  78.         echo ((string) $num).' ^ '.$cnum.' or '.var_export($r1,1).' ^ '.var_export($r2,1).' = '.var_export($org,1).' or '.var_export($bit->create_val_str($org),1).PHP_EOL.PHP_EOL;
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement