hxt1218 10 months ago
parent c1288071c0
commit 3e7c759622

@ -17,6 +17,9 @@
display: block; display: block;
margin-bottom: 10px; margin-bottom: 10px;
} }
#result {
font-weight: bold;
}
</style> </style>
</head> </head>
<body> <body>
@ -25,7 +28,7 @@
<input type="number" id="fromBase" min="2" max="16" required> <input type="number" id="fromBase" min="2" max="16" required>
<label for="number">输入数字:</label> <label for="number">输入数字:</label>
<input type="text" id="number" required> <input type="text" id="number" placeholder="例如1010" required>
<label for="toBase">转换为进制 (2-16):</label> <label for="toBase">转换为进制 (2-16):</label>
<input type="number" id="toBase" min="2" max="16" required> <input type="number" id="toBase" min="2" max="16" required>
@ -36,20 +39,29 @@
<div id="result"></div> <div id="result"></div>
<script> <script>
document.getElementById('convertButton').addEventListener('click', function() { document.getElementById('convertButton').addEventListener('click', () => {
const fromBase = parseInt(document.getElementById('fromBase').value); const fromBase = parseInt(document.getElementById('fromBase').value);
const number = document.getElementById('number').value; const number = document.getElementById('number').value.trim();
const toBase = parseInt(document.getElementById('toBase').value); const toBase = parseInt(document.getElementById('toBase').value);
// 先将输入的任意进制数转换为十进制 // 验证输入的数字是否合法
const decimalValue = parseInt(number, fromBase); if (!/^[0-9A-Fa-f]+$/.test(number) || !isValidForBase(number, fromBase)) {
document.getElementById('result').textContent = '输入的数字不符合指定的进制规则!';
return;
}
// 将十进制数转换为目标进制 // 转换为十进制
const decimalValue = parseInt(number, fromBase);
const convertedValue = decimalValue.toString(toBase).toUpperCase(); const convertedValue = decimalValue.toString(toBase).toUpperCase();
// 显示结果 // 显示结果
document.getElementById('result').textContent = convertedValue; document.getElementById('result').textContent = convertedValue;
}); });
function isValidForBase(numStr, base) {
const validChars = '0123456789ABCDEF'.slice(0, base);
return [...numStr].every(char => validChars.includes(char.toUpperCase()));
}
</script> </script>
</body> </body>
</html> </html>

Loading…
Cancel
Save