这是一个简单的十进制与十六进制互换的程式, 写这种程式将可以训练我们的逻辑思考, 望大家会喜欢 !
注: 档案名为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, $i, 1);
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>
|
|