用js进制转换,字符串操作实现远动信息传输规约同步字快速转换

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)+"&nbsp;"+x1.slice(4,8);
        //下一组的数据
        var q2=x1.slice(8,12)+"&nbsp;"+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)+"&nbsp;"+x4.slice(4,8);
        x5=x1.slice(8,16).split("").reverse().join("");
        document.getElementById("091").innerHTML=x5.slice(0,4)+"&nbsp;"+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()字符串转大写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值