|
|
|
@ -0,0 +1,74 @@
|
|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<html lang="zh">
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
<title>进制转换</title>
|
|
|
|
|
<script>
|
|
|
|
|
function toDecimal(number, base) {
|
|
|
|
|
let decimal = 0;
|
|
|
|
|
let power = 0;
|
|
|
|
|
for (let i = number.length - 1; i >= 0; i--) {
|
|
|
|
|
let digit = number[i];
|
|
|
|
|
let value = parseInt(digit, base);
|
|
|
|
|
if (isNaN(value)) {
|
|
|
|
|
alert(`无效的数字 ${digit} 对于基数 ${base}`);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
decimal += value * Math.pow(base, power);
|
|
|
|
|
power++;
|
|
|
|
|
}
|
|
|
|
|
return decimal;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function fromDecimal(number, base) {
|
|
|
|
|
if (number === 0) {
|
|
|
|
|
return "0";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let result = "";
|
|
|
|
|
const digits = "0123456789ABCDEF";
|
|
|
|
|
|
|
|
|
|
while (number > 0) {
|
|
|
|
|
let remainder = number % base;
|
|
|
|
|
result = digits[remainder] + result;
|
|
|
|
|
number = Math.floor(number / base);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function convert() {
|
|
|
|
|
let sourceBase = document.getElementById('sourceBase').value;
|
|
|
|
|
let sourceNumber = document.getElementById('sourceNumber').value.toUpperCase();
|
|
|
|
|
let targetBase = document.getElementById('targetBase').value;
|
|
|
|
|
|
|
|
|
|
if (sourceBase < 2 || sourceBase > 16 || targetBase < 2 || targetBase > 16) {
|
|
|
|
|
alert("基数必须在2到16之间");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let decimal = toDecimal(sourceNumber, sourceBase);
|
|
|
|
|
if (decimal !== null) {
|
|
|
|
|
let targetNumber = fromDecimal(decimal, targetBase);
|
|
|
|
|
document.getElementById('result').innerText = `转换后的数是: ${targetNumber}`;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<h1>进制转换器</h1>
|
|
|
|
|
<form onsubmit="event.preventDefault(); convert();">
|
|
|
|
|
<label for="sourceBase">原始进制(2-16):</label>
|
|
|
|
|
<input type="number" id="sourceBase" required min="2" max="16"><br><br>
|
|
|
|
|
|
|
|
|
|
<label for="sourceNumber">原始数:</label>
|
|
|
|
|
<input type="text" id="sourceNumber" required pattern="[0-9A-Fa-f]*"><br><br>
|
|
|
|
|
|
|
|
|
|
<label for="targetBase">目标进制(2-16):</label>
|
|
|
|
|
<input type="number" id="targetBase" required min="2" max="16"><br><br>
|
|
|
|
|
|
|
|
|
|
<button type="submit">转换</button>
|
|
|
|
|
</form>
|
|
|
|
|
<p id="result"></p>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|