parent
f91eac66ca
commit
ad89ce409a
@ -0,0 +1,74 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>进制转换程序</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; }
|
||||
input { margin-bottom: 10px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>进制转换程序</h1>
|
||||
|
||||
<label for="fromBase">输入进制 (R1):</label>
|
||||
<input type="number" id="fromBase" value="10" min="2" max="16"><br>
|
||||
|
||||
<label for="numberX">输入数字 X:</label>
|
||||
<input type="text" id="numberX"><br>
|
||||
|
||||
<label for="toBase">转换进制 (R2):</label>
|
||||
<input type="number" id="toBase" value="10" min="2" max="16"><br>
|
||||
|
||||
<button onclick="convertBase()">转换</button>
|
||||
|
||||
<h2>转换结果 Y:</h2>
|
||||
<p id="result"></p>
|
||||
|
||||
<script>
|
||||
function convertBase() {
|
||||
// 获取输入值
|
||||
const fromBase = parseInt(document.getElementById('fromBase').value);
|
||||
const numberX = document.getElementById('numberX').value.trim();
|
||||
const toBase = parseInt(document.getElementById('toBase').value);
|
||||
|
||||
// 验证输入
|
||||
if (!isValidNumberInBase(numberX, fromBase)) {
|
||||
document.getElementById('result').innerText = "输入的数字 X 在指定的进制 R1 中无效!";
|
||||
return;
|
||||
}
|
||||
|
||||
// 将 X 从 R1 进制转换为十进制
|
||||
const decimalValue = parseInt(numberX, fromBase);
|
||||
|
||||
// 将十进制转换为 R2 进制
|
||||
const resultY = decimalToBase(decimalValue, toBase);
|
||||
|
||||
// 输出结果
|
||||
document.getElementById('result').innerText = resultY;
|
||||
}
|
||||
|
||||
function isValidNumberInBase(number, base) {
|
||||
const validCharacters = '0123456789ABCDEF'.substring(0, base);
|
||||
for (let char of number.toUpperCase()) {
|
||||
if (!validCharacters.includes(char)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function decimalToBase(decimal, base) {
|
||||
if (decimal === 0) return '0';
|
||||
let result = '';
|
||||
while (decimal > 0) {
|
||||
const remainder = decimal % base;
|
||||
result = (remainder < 10 ? remainder : String.fromCharCode(remainder - 10 + 'A'.charCodeAt(0))) + result;
|
||||
decimal = Math.floor(decimal / base);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in new issue