Leo の Blog Where there is a will there is a way! Trust youself can do it!

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;
}
分类: PHP 发表评论
评论 (0) 引用 (0)

还没有评论.


发表评论


还没有引用.