[PHP][位转换积累]之pack和unpack
Posted yiyide266
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PHP][位转换积累]之pack和unpack相关的知识,希望对你有一定的参考价值。
http://my.oschina.net/goal/blog/195749?fromerr=pryT221q
<?php $hex = unpack(‘H*‘,‘as‘); var_dump( $hex ); var_dump( hexdec($hex[1]) ); var_dump( base_convert ( $hex[1] , 16 , 2 ) ); $bin = pack("a*", "da"); echo "output: " . $bin . "\n"; echo "output: 0x" . bin2hex($bin) . "\n"; ?>
取十进制数$num的第$bit位起至$mask位,返回值是十进制数
原理,把$num右移动至$bit位,然后跟$mask相与,得到的就是掩码掩住的几位二进制数,例如(也就是0000 1010),取9的第2至第4位(101,也就是十进制数5),先右移动1位,然后跟7(也就是0000 0111)相与,然后得到5(101)这个数,因为相与的位,只有双方都为1的时候才等于1,只有一方为0都等于0,所以掩码必须为连贯的1的二进制数,例如0000 1111,0000 0111
function getBit( $num, $bit, $mask ){ return $num>>$bit&$mask; } var_dump( getBit( 41, 3, 7 ) );
以上是关于[PHP][位转换积累]之pack和unpack的主要内容,如果未能解决你的问题,请参考以下文章