十进制与十六进制互换

这是一个简单的十进制与十六进制互换的程式, 写这种程式将可以训练我们的逻辑思考, 望大家会喜欢 !

注: 档案名为hex.php

<html>
<head>
    <title>Untitled</title>
</head>

<body>
<form action="hex.php" method="post">
<table border = "0">
    <tr>
        <td>Decimal To Hex:</td>
        <td><input type="text" name="DecToHex" value=""></td>
        <td><input type="submit" name="submit_DecToHex" value="Convert!"></td>
    </tr>
    <tr>
        <td>Hex To Decimal:</td>
        <td><input type="text" name="HexToDec" value=""></td>
        <td><input type="submit" name="submit_HexToDec" value="Convert!"></td>
    </tr>
</table>    
</form>
<?
    
/*    这是一个将十进制转十六进制的函数    */
    
function toHex ($int_num) {
        while (
$int_num >= 1) {
            
$modValue $int_num 16;
            if (
$modValue == 10) {
                
$a "A";
            } elseif (
$modValue == 11) {
                
$a "B";
            } elseif (
$modValue == 12) {
                
$a "C";
            } elseif (
$modValue == 13) {
                
$a "D";
            } elseif (
$modValue == 14) {
                
$a "E";
            } elseif (
$modValue == 15) {
                
$a "F";
            } else {
                
$a "" $modValue;
            }
            
            
$strMod $a $strMod;
            
$int_num floor($int_num 16); /*    integer除法    */
        
//-- end while
            
return $strMod;    /*    传回一个值        */
    
}

    
/*    这是一个将十六进制转为十进制的函数    */    
    
function toDecimal($strHex) {
        
$counter = -1;
        
$z 0;
        
/*    由于十六进制关到string, 所以必需用到string函数, 也就是substr, strlen等    */
        
for ($i strlen($strHex); $i >= 0$i--) {
            
$y substr($strHex$i1);
            if (
$y == "A") {
                
$a 10;
            } elseif (
$y == "B") {
                
$a 11;
            } elseif (
$y == "C") {
                
$a 12;
            } elseif (
$y == "D") {
                
$a 13;
            } elseif (
$y == "E") {
                
$a 14;
            } elseif (
$y == "F") {
                
$a 15;
            } else {
                
$a $y;
            }
            
$z += (pow(16,$counter) * $a);    
            
$counter++;
        } 
//-- end for
            
return $z;
    } 
//-- end toDecimal
    
    
if ($submit_DecToHex != "") {
        echo 
"Decimal to <strong>Hex</strong>: " toHex($DecToHex);
    } elseif (
$submit_HexToDec != "") {
        echo 
"Hex To <strong>Decimal</strong>: " toDecimal(strtoupper($HexToDec));
    }
?>
</body>
</html>