This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!

PHP bitwise

By: CleverWebAdmin on Aug 6th, 2013  |  syntax: PHP  |  size: 2.41 KB  |  views: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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. }
clone this paste RAW Paste Data