js进制转换,字符串操作
通过js实现远动信息传输规约同步字转换
简单实现一下,同步字经过串行口,二进制反转的需求
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>远动信息传输规约</title>
</head>
<body>
<form action="" method="post" name="fm">
<input type="text" name="time" id="time" value='' />
<input type="button" name="submit" value="提交" onclick="subs();">
</form>
<table border="1">
<caption>同步字</caption>
<!-- 保证同步字在通道中的传送顺序 -->
<tr>
<td id="eb" width=25px; height=30px;></td>
<td id="ed1" width=80px; height=30px;></td>
<td rowspan="2" width=80px; height=30px;>串行口镜像</td>
<td id="D71" width=80px; height=30px;></td>
<td id="D7" width=25px; height=30px;></td>
</tr>
<tr>
<td id="90" width=25px; height=30px;></td>
<td id="901"></td>
<td id="091" width=80px; height=30px;></td>
<td id="09" width=25px; height=30px;></td>
</tr>
</table>
<script>
function subs(){
//转十六进制
var a1="0x";
var b1=fm.time.value;
var y1 = a1+b1;
//转十进制
x1 = parseInt(y1,16);
// 四位十六进制取前两位
var sliced = b1.slice(0, 2);
// 结果输出到表格
document.getElementById("eb").innerHTML=sliced;
// 四位十六进制取后两位
var sliced1 = b1.slice(2, 4);
// 结果输出到表格
document.getElementById("90").innerHTML=sliced1;
//十进制转二进制
x1=x1.toString(2);
//保证位数相同
length =x1.toString(2).length;
for(var i =0;i<b1.length*4-length;i++){
x1="0"+x1;
}
//二进制取前四位加空格在去后四位
var q=x1.slice(0,4)+" "+x1.slice(4,8);
//下一组的数据
var q2=x1.slice(8,12)+" "+x1.slice(12,16);
//输出结果到表格中
document.getElementById("ed1").innerHTML=q;
document.getElementById("901").innerHTML=q2;
//.split("").reverse().join("")字符串反转
x4=x1.slice(0,8).split("").reverse().join("");
document.getElementById("D71").innerHTML=x4.slice(0,4)+" "+x4.slice(4,8);
x5=x1.slice(8,16).split("").reverse().join("");
document.getElementById("091").innerHTML=x5.slice(0,4)+" "+x5.slice(4,8);
//二进制转十六进制,toUpperCase(),字符串转大写
a =parseInt(x4,2).toString(16).toUpperCase();
for(var i=0;i<x4.length/4-a.length;i++){
a="0"+a;
}
document.getElementById("D7").innerHTML=a;
//整数回省去零,用for来判断0是否被省
b =parseInt(x5,2).toString(16).toUpperCase();
for(var i=0;i<x4.length/4-b.length;i++){
b="0"+b;
}
document.getElementById("09").innerHTML=b;
}
</script>
</body>
</html>
运行结果如下
总结:
代码 | 功能 |
---|---|
function **() | 声明一个函数 |
x.slice(i,j) | 获取字符串指定位置片段 |
document.getElementById(“id”) | 输出结果到HTML |
parseInt(n,16) | 其它进制转十进制,16(十六进制) |
x1.toString(2) | 十进制转其它进制,2(二进制) |
.split("").reverse().join("") | 字符串反转 |
.toUpperCase() | 字符串转大写 |