def RBIT(num): result = '' tmp_string = bin(num)[2:] while len(tmp_string) < 8: tmp_string = '0' + tmp_string for i in range(0, 8): result = result + tmp_string[7 - i] print(result) return int(result, 2)
@幕后导演,
我才发现这是将数字转换为二进制,然后取反就可以了,如果偏要根据上述代码转换,那么就是以下代码
<?php function rbit($num) { $result = ''; $bin = decbin($num) . '';//转换为二进制,并强制转换为string类型 //不足8位数最前面补零 while (strlen($bin) < 8) { $bin = "0{$bin}"; } foreach (range(0, 8) as $k => $v) { $result = $result . '' . $bin{7 - $k}; printf("%s\n", $result);//这行可以注释掉 } return $result; } echo rbit(1234);
C:\Users\chuwen\Desktop>php 22222.php 0 01 010 0101 01011 010110 0101100 01011001 010110010 010110010
但是运行结果我比较纳闷,和上面的代码运行结果不一样,自测把,顺便 @老虎会游泳 解释下
<?php function rev_bin($num) { //使用 decbin 函数 把数字转换成二进制 (这个函数输出的类型为 string) //然后使用 strrev 函数,将字符串取反 strrev 函数需要传入的参数未 stieng 类型 return strrev(decbin($num)); }
$str = '18 186 216 111 63 247 114 14 224 176 181 204 36 251 244 167 217 76 149 182 149 6 195 20 63 247 114 14 224 176 181 204 36 251 244 167 217 76 149 87'; $num = explode(' ', $str);
@幕后导演,
第14行可以注释掉
运行结果:
一步到位方法