求将这一段Python转成php

@Ta 2020-12-19发布,2020-12-19修改 4266点击
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)
回复列表(4|隐藏机器人聊天)
  • @Ta / 2020-12-19 / /
    帮你手动 @老虎会游泳
  • @Ta / 2020-12-19 / /

    @幕后导演

    第14行可以注释掉

    我才发现这是将数字转换为二进制,然后取反就可以了,如果偏要根据上述代码转换,那么就是以下代码

    <?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));
    }
    
  • @Ta / 2020-12-19 / /
    @NowTime,运行结果是对的,但是我想循环数组去转换该怎么弄
    $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); 
    
  • @Ta / 2020-12-19 / /
    @NowTime,已经解决了,感谢兄弟
添加新回复
回复需要登录