【问题标题】:Given an array of ones and zeroes, convert the equivalent binary value to an integer.PHP [duplicate]给定一个由 1 和 0 组成的数组,将等效的二进制值转换为整数。PHP [重复]
【发布时间】:2020-04-21 22:34:35
【问题描述】:

我已经尝试了以下解决方案,但我不明白为什么我没有得到正确的结果,感谢任何帮助。非常感谢。

function binaryArrayToNumber($arr) {

    $sumarr = []; 

    for($i=count($arr);$i>0 ;$i--){

        $power= pow(2,($i-1));
        $sumarr[]=$power*$arr[$i-1];    
    }

    return array_sum($sumarr); 

}

示例答案是 测试: [1, 1, 1, 1] ==> 15 测试:[1, 0, 1, 1] ==> 11

【问题讨论】:

  • return bindec(implode($arr));?还是您的意思是出于某种原因您想“手动”实现它?
  • 这是什么kata挑战还是什么?
  • 这是一个 Kata 挑战
  • 没有对此副本投赞成票:stackoverflow.com/questions/41760989/…

标签: php arrays binary


【解决方案1】:

您的代码中有一个逻辑错误。您的pow 计算不正确,因为您使用$i 计算功率。

尝试以下操作,这将输出您期望的结果:

function binaryArrayToNumber($arr) {
    $num = 0; 
    $pow = 0;

    for($i = count($arr) - 1; $i >= 0; $i--) {
        $num += pow(2, ($pow++)) * $arr[$i];
    }

    return $num;
}

echo binaryArrayToNumber([1, 1, 1, 1]);
echo binaryArrayToNumber([1, 0, 1, 1]);

输出:

15
11

【讨论】:

  • 谢谢马丁,我不明白为什么有人关闭了这个问题:(
猜你喜欢
  • 2018-10-05
  • 2018-11-07
  • 2023-03-18
  • 2019-11-24
  • 2019-08-11
  • 2013-01-09
  • 2021-08-05
  • 2017-01-03
  • 1970-01-01
相关资源
最近更新 更多