题解 | #进制转换#

进制转换

http://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

方法一,正向遍历

<?php

fscanf(STDIN, "%s", $str);

$map = [ 
    '0' => 0, 
    '1' => 1, 
    '2' => 2, 
    '3' => 3, 
    '4' => 4,
    '5' => 5,
    '6' => 6, 
    '7' => 7, 
    '8' => 8, 
    '9' => 9, 
    'A' => 10, 
    'B' => 11, 
    'C' => 12, 
    'D' => 13, 
    'E' => 14, 
    'F' => 15 
];

$ans = 0;
$base = 16;
for($i = 2; $i < strlen($str); $i++) {
    $char = $str[ $i ];
    $value = $map[ $char ];
    
    $ans = $ans*$base+$value;
}

echo $ans;

方法二,倒着遍历

<?php
 
fscanf(STDIN, "%s", $str);
 
$map = [
    '0' => 0,
    '1' => 1,
    '2' => 2,
    '3' => 3,
    '4' => 4,
    '5' => 5,
    '6' => 6,
    '7' => 7,
    '8' => 8,
    '9' => 9,
    'A' => 10,
    'B' => 11,
    'C' => 12,
    'D' => 13,
    'E' => 14,
    'F' => 15
];
 
$ans = 0;
$scale = 1;
for($i = strlen($str)-1; $i >= 2; $i--) {
    $char = $str[ $i ];
    $value = $map[ $char ];
     
    $ans += $value*$scale;
     
    $scale *= 16;
}
 
echo $ans;
全部评论

相关推荐

05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务