2016-03-12 2 views
-1

Я начинаю на PHP, и я хочу создать программу, которая преобразует десятичные числа в шестнадцатеричные числа. (На самом деле я хочу преобразовать значение десятичного значения цвета в шестнадцатеричное значение) Однако он не работает должным образом. Например, когда я нажимаю кнопку преобразования с этими параметрами: красный = 98 синих = 123 зеленый = 54 Он генерирует этот результат:Расчет PHP неправильный

Red : Green : Blue : B

Я не понимаю, что неправильно это.

Это мой исходный код:

<html> 
<head> 
    <title>Convert Decimal Number to Hexadecimal Number</title> 
<form method="POST" action="index.php" > 
    Red : <input type="text" name="red" /> <br /> 
    Green: <input name="green" type="text" /> <br /> 
    Blue : <input name="blue" type="text" /> <br /> 
    <input type="submit" value="Calculate!" /> <br /> 
</form> 
</head> 
<body> 
    <?php 
    $completely=""; 
    if ($_POST['red']==""){ 
     exit(); 
    } 
    function subcalculate($valuetoconvert){ 
     if ($valuetoconvert>9){ 
      switch ($valuetoconvert){ 
       case 10: 
        $valuetoconvert=A; 
        break; 
       case 11: 
        $valuetoconvert=B; 
        break; 
       case 12: 
        $valuetoconvert=C; 
        break; 
       case 13: 
        $valuetoconvert=D; 
        break; 
       case 14: 
        $valuetoconvert=E; 
        break; 
       case 15: 
        $valuetoconvert=F; 
        break; 
      } 
      return $valuetoconvert; 
     } 
    } 
    function dectohexcal($color,$colorname){ 
     $bir=subcalculate(($color-($color%16))/16); 
     $iki=subcalculate($color%16); 
     if ($bir==0){ 
      echo "$colorname : $iki <br />"; 
      $completely=$completely+$iki; 
     }else{ 
      echo "$colorname : $bir$iki <br />"; 
      $completely=$completely+$bir+$iki; 
     } 

    } 
    dectohexcal($_POST['red'], "Red"); 
    dectohexcal($_POST['green'], "Green"); 
    dectohexcal($_POST['blue'], "Blue"); 
    echo "<br />$completely"; 
    ?> 

</body> 

+3

Зачем изобретать колесо? Есть функция, которая преобразует десятичные знаки в шестнадцатеричные: http://php.net/manual/en/function.dechex.php – Qirel

+0

И ваша проблема заключается в том, что вы возвращаете '$ valuetoconvert' внутри' subcalculate() ', когда число > 9, поэтому он ничего не возвращает <= 9 – Qirel

ответ

1

Вам нужно использовать только DecHex() функция, которая доступна с php4 +.

<?php 
echo "Red: ".dechex($_POST['red']) . "\n"; 
echo "Green: ". dechex($_POST['green'])."\n"; 
echo "Blue: ".dechex($_POST['blue']); 
?> 

Это должно выполнить вашу работу без необходимости повторного изобретения колеса.

Смежные вопросы