214115093 5 months ago
parent 800d62e6d5
commit 2c51b36d3b

@ -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>
Loading…
Cancel
Save