24六/090
分享2个 PHP 十进制和二进制互转的函数
有时候想看一个整数的二进制数据换算挺麻烦的. 留2个函数方便使用.
从十进制转成二进制.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /** * 有符号整型数据转换成二进制形式. * * @param int $si 要转换的整型数据 * @param int $bits 计算机CPU位宽 * @return string */ function si2bin($si, $bits=32) { //检查数据大小是否在范围内. if ($si >= -pow(2,$bits-1) and $si <= pow(2,$bits-1) ){ if ($si < 0) { $si = -$si-pow(2,$bits); } $bin = base_convert($si,10,2); $bin_length = strlen($bin); if ($bin_length < $bits) $bin = str_repeat ( "0", $bits-$bin_length).$bin; return $bin; } return ''; } |
从二进制转到十进制:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /** * 二进制数据转换成有符号整数. * * @param string $bin 二进制数据 * @param int $bits 计算机CPU位宽 * @return int */ function bin2si($bin,$bits=32) { if (strlen($bin)==$bits) { $si = base_convert($bin,2,10); if (substr($bin,0,1) == 1) { //负数 $si = -(pow(2,$bits)-$si); } return $si; } return 0; } |