You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
software18/jzzh.html

74 lines
2.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!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>