假设我有一个函数手动从二进制数计算十进制
*最多4个字符(二进制)
*假设你只能输入0和1个字符计算二进制到十进制手动
下面代码工作完全
function bin_to_dec($bin) {
$bin = str_split($bin);
$bin = array_reverse($bin);
$i = 0;
$dec = 0;
foreach($bin as $values) {
$ans = $values * pow(2, $i);
$dec += $ans;
$i++;
}
return $dec;
}
$bin = 1010 //4
$bin = 1 //1
$bin = 0 //0
假设,如果你不能使用函数strrev(),str_split(),array_reverse(),如何将二进制手动转换为十进制?
'$长度= strlen的($斌); for($ i = 0; $ i <$ length; $ i ++){$ offset = $ length - $ i - 1; $ values = $ bin {$ offset}; // ....你的循环代码的其余部分}' –
@MarkBaker谢谢你的回复!你的代码帮助了我很多!我的最终代码是 $ length = strlen($ bin); $ dec = 0; //ver.1 for($ i = 0; $ i <$ length; $ i ++){ $ offset = $ length - $ i - 1; $ values = $ bin [$ offset]; $ ans = $ values * pow(2,$ i); $ dec + = $ ans; } –
@MarkBaker对不起,我的回复很难阅读,缩进和换行似乎不起作用。但是如果在项目中支持substr()函数,这里是我的ver.2代码。 $ length = strlen($ bin); $ dec = 0;对于($ i = 1; $ i <= $ length; $ i ++){ $ values = substr($ bin, - $ i,1); $ ans = $ values * pow(2,$ i-1); $ dec + = $ ans; } 但我仍然比较喜欢第一版,因为它不依赖于php本地函数,所以它会在不同版本上更兼容。的PHP如果功能不能正常工作。 –