首页 > 代码库 > 利用php数组实现Bitset位处理模块功能
利用php数组实现Bitset位处理模块功能
接上篇,php的bitset模块介绍和安装
利用php的bitset模块可以实现c++的bitset相关功能。但是,在生产环境下需要给线上服务器安装模块是很危险和麻烦的事,所以需要另辟蹊径。
我用php的array数组模拟了bitset的几个主要方法的实现过程,其实就是利用Array的key模拟内存地址,value模地址内容。php的Array还是超级方便的 :)
1 <?php 2 define(‘CHAR_BIT‘, 8); 3 /** 4 * bitset操作php实现 5 * @version:1.0 6 * @author:Kenny{Kenny.F<mailto:kennyffly@gmail.com>} 7 * @since:2014/05/21 8 */ 9 class Bitset {10 11 private $bitset_data = array();12 private $_len = 0;13 14 //分配位数组空间15 function &bitset_empty($bit=0)16 {17 if(!is_numeric($bit) || $bit<0)18 {19 echo "argument must be a positive integer";20 return False;21 }22 $this->_len = $bit;23 return $this->bitset_data;24 }25 26 //位数组位置$bit上的值置为127 public function bitset_incl(&$bitset_data=array(), $bit=0)28 {29 if (!is_numeric($bit) || $bit<0)30 {31 echo "Second argument must be a positive integer";32 return False;33 }34 35 $bitset_temp = isset($bitset_data[intval($bit/CHAR_BIT)]) ? $bitset_data[intval($bit/CHAR_BIT)] : 0;36 $bitset_data[intval($bit/CHAR_BIT)] = $bitset_temp | 1 << ($bit % CHAR_BIT);37 38 unset($bitset_data);39 }40 41 //判断某个位置bit上的值是否为142 public function bitset_in($bitset_data=array(), $bit=0)43 {44 if (!is_array($bitset_data))45 {46 echo "first argument is not a array";47 return False;48 }49 50 if ($bit < 0)51 {52 return False;53 }54 if ($this->_len == 0)55 {56 return False;57 } elseif($bit >= $this->_len*CHAR_BIT){58 return False;59 } elseif ($bitset_data[intval($bit/CHAR_BIT)] & (1 << ($bit % CHAR_BIT))){60 return True;61 } else{62 return False;63 }64 }65 66 }
你可以查看我的github
利用php数组实现Bitset位处理模块功能
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。