码迷,mamicode.com
首页 > Web开发 > 详细

[PHP][位转换积累]之pack和unpack

时间:2016-06-04 19:21:26      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/yiyide266/p/5559182.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!