进制之间的转换
开发工具与关键技术:进制
作者:张国军
撰写时间:2019年04月08日
进制之间的转换,我刚开始学的时候感觉很难,但是经过自己的摸索之后得出了其中的规律。进制之间的转换其实并不难(这是我在摸索出规律之后觉得的,哈哈),主要的是我们要找出其中的规律。至于进制有什么用,能用在什么地方,,我也不知道,那就得靠各位自己去怎么使用了。
首先我们要知道进制有多少进制的,我就知道有(二进制、八进制、十进制、十六进制),其他的还有没有我也不知道了。
那么大家看一下我所写的代码和效果。
这个是我做的一个简单mvc的代码测试。
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>add</title>
</head>
<body>
<div>
<select id="Change">
<option value="2">二进制</option>
<option value="8">八进制</option>
<option value="10">十进制</option>
<option value="16">十六进制</option>
</select>
<input id="mojsf" type="text" name="name" value="" />转
<select id="Target">
<option value="2">二进制</option>
<option value="8">八进制</option>
<option value="10">十进制</option>
<option value="16">十六进制</option>
</select>
<input type="text" name="name" value="" id="results" />
<button id="transition" onclick="TurnSixteen()" type="button" >转换</button>
</div>
<script>
function TurnSixteen() {
var change = document.getElementById("Change").value;//获取第一个进制
var target = document.getElementById("Target").value;//目标进制
var Inquire = document.getElementById("mojsf").value;//待转变值
if (Inquire == undefined || Inquire == null) {
Inquire = "";
}
var DruggID = Inquire.split("");
var Nowprice = DruggID;
var ten;
if (change != 10) {
ten = 0;
for (var i = 0; i < Nowprice.length; i++) {
var j = (Nowprice.length - 1) - i;
if (Nowprice[i] == "A" || Nowprice[i] == "a") {
Nowprice[i] = 10;
}
if (Nowprice[i] == "B" || Nowprice[i] == "b") {
Nowprice[i] = 11;
}
if (Nowprice[i] == "C" || Nowprice[i] == "c") {
Nowprice[i] = 12;
}
if (Nowprice[i] == "D" || Nowprice[i] == "d") {
Nowprice[i] = 13;
}
if (Nowprice[i] == "E" || Nowprice[i] == "e") {
Nowprice[i] = 14;
}
if (Nowprice[i] == "F" || Nowprice[i] == "f") {
Nowprice[i] = 15;
}
ten += Nowprice[i] * Math.pow(change, j);
}
} else {
ten = "";
for (var i = 0; i < Nowprice.length; i++) {
ten += Nowprice[i];
Nowprice[i] = 0;
}
}
var over = [];
for (var i = 0; i < Nowprice.length*4; i++) {
if (over[i] == null || over[i] == "") {
over[i] = 0;
}
}
over[over.length - 1] += parseInt(ten);
for (var i = over.length - 1; i >= 0; i--) {
for (over[i]; over[i] >= target; over[i] - target) {
over[i] = over[i] - target;
over[i - 1] = over[i - 1] + 1;
}
}
for (var i = 0; i < over.length; i++) {
if (over[i] == 0) {
over[i] = "";
} else {
i = over.length + 1;
}
}
for (var i = 0; i < over.length; i++) {
if (over[i] == 10) {
over[i] = "A";
}
if (over[i] == 11) {
over[i] = "B";
}
if (over[i] == 12) {
over[i] = "C";
}
if (over[i] == 13) {
over[i] = "D";
}
if (over[i] == 14) {
over[i] = "E";
}
if (over[i] == 15) {
over[i] = "F";
}
}
var ss="";
for (var i = 0; i < over.length; i++) {
ss += ""+over[i];
}
document.getElementById("results").value = ss;
}
</script>
</body>
</html>
我的代码大致的思路就是,我们先将获取的值转化为十进制,然后通过十进制作为一个中间站再转为其他进制,我这里使用最多的是数组,我将它们放进数组里面然后挨个处理。特别需要注意的是十六进制,它存在特殊的"A,B,C,D,E,F",我这里是将它进行处理改变为“10,11,12,13,14,15”,然后再进行计算。
可能大家有很多的疑问、不一样的想法,欢迎大家在评论区言论。