为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 php 中反转 while 循环输出的顺序

如何在 php 中反转 while 循环输出的顺序

PHP
陪伴而非守候 2022-08-19 10:18:06
我的目标是将十进制整数转换为二进制,如本视频中所述,http://youtu.be/XdZqk8BXPwg 使用php函数,我知道php可以使用内置的decbin()开箱即用,但无论如何我都想写一个。<?phpfunction decToBin($int) {$roundInt = intval($int) * 2;    while ($roundInt > 1) {        $result = intval($roundInt = $roundInt / 2);        if ($result % 2 == 0) {            $result = 0;        } else {            $result = 1;        }        echo $result;    }}decToBin(123);我尝试在循环时,但我得到的结果颠倒了。有没有办法我可以反转,所以不是11011110我得到01111011,或者没有前面的零更好。谢谢
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

与其一次一个位地回显结果,不如通过在左侧添加新值来构建一个字符串:


<?php

function decToBin($int) {

    $roundInt = intval($int) * 2;

    $output = '';

    while ($roundInt > 1) {

        $result = intval($roundInt = $roundInt / 2);

        if ($result % 2 == 0) {

            $result = 0;

        } else {

            $result = 1;

        }

        $output = $result . $output;

    }

    echo $output;

}


查看完整回答
反对 回复 2022-08-19
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

只是你在这里做错了几件事:

  1. 您有一个舍入错误(使用intdiv进行整数除法,而不是您正在执行的操作,这会产生复合效应)。

  2. 指定实际的类型隐藏而不是强制转换(确保类型安全)

  3. 从函数返回实际值,不输出(保留对其最终组合的控制)

以下是您的函数的实际外观...

function decToBin(Int $int): String {

    $bin = ""; // Initialize the return value


    $roundInt = $int * 2;


    while ($roundInt > 1) {

        $roundInt = $result = intdiv($roundInt, 2); // Safe integer division

        $result &= 1;

        $bin = $result . $bin; // Compose with byte endianness at LSB first  

    }


    return $bin;

}


var_dump(decToBin(123));

现在您得到实际的正确结果...


string(7) "1111011"


查看完整回答
反对 回复 2022-08-19
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

我对现有代码进行了最小的更改,而无需更改方法。您可以使用 strrev 函数来反转输出。这里,数据被附加到$return_data,它返回并存储在$returned_data中,然后使用strrev预定义函数。


function decToBin($int) {

$roundInt = intval($int) * 2;

$return_data ='';

    while ($roundInt > 1) {

        $result = intval($roundInt = $roundInt / 2);

        if ($result % 2 == 0) {

            $result = 0;

        } else {

            $result = 1;

        }

        $return_data .=$result;  //Data appending

    }

  return $return_data; //returns

}

$returned_data =  decToBin(123);

echo strrev($returned_data); //reverse function


查看完整回答
反对 回复 2022-08-19
  • 3 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号