zoukankan      html  css  js  c++  java
  • 前端智勇大闯关第二季第三题

    前端智勇大闯关-第二季-第三题
    10的世界
    在我们的世界里,字母A很好理解
    键盘兄表示65无压力
    CPU表示01000001才是王道

    1、题目中描述的三句话:二进制与十进制与A之间的相互转换
    2、在textarea元素中包含了一长串的二进制编码(0和1的世界)
    3、下图展示由二进制码转换成字母的过程
    每八位一组由二进制转化十进制,由十进制找到对应的asc码,将这些asc码每四个组成一组,再转换成十进制,最后,把十进制转成成asc码,对应的字母相应的就出来了。。。

    4、详细代码

    var str = "0011000000110000001101100011100000110000001100000011011100110100001100000011000000110111001101000011000000110000001101110011
    000000110000001100000011001101100001001100000011000000110010011001100011000000110000001100100110011000110000001100000011011100110111001
    10000001100000011011100110111001100000011000000110111001101110011000000110000001100100110010100110000001100000011011000110011001100000
    01100000011011001100101001100000011000000110110001100100011000000110000001101100110001100110000001100000011011001100110001100000011000
    00011011000110111001100000011000000110111001100110011000000110000001100100110010100110000001100000011011000110011001100000011000000110
    11001100110001100000011000000110110011001000011000000110000001100100110011000110000001100000011011001100010001100000011000000110111001
    1010100110000001100000011011000111001001100000011000000110110011000100011000000110000001101110011010100110000001100000011011000111001"; var mstr = "",nstr=""; for(var i=0;i<str.length/8;i++){ var tmp = str.substr(i*8, 8); tmp = parseInt(tmp,2).toString(10); mstr += String.fromCharCode(tmp); } for(var i=0;i<mstr.length/4;i++){ var tmp = mstr.substr(i*4,4); tmp = parseInt(tmp,16).toString(10); nstr += String.fromCharCode(tmp); } console.log(nstr); //http://www.cnblogs.com/kuikui

    接下来,分析分析这个题目是怎么实现的,知道答案了,其实是一个逆过程。
    目标:由字符转换成二进制码
    详细代码:

    var str = "http://www.cnblogs.com/kuikui";
    var marr = new Array(),narr= new Array(),parr=new Array();
    var mstr = "";           
    for(var i = 0;i<str.length;i++){
        marr.push( str.charAt(i).charCodeAt(0));
    }           
    for(var i=0;i<marr.length;i++){
        narr.push(("0000"+parseInt(marr[i],10).toString(16)).substr(-4));
    }
    str = narr.join("");  
    for(var i =0;i<str.length;i++){
        mstr+=("00000000"+parseInt(str[i].charCodeAt(0),10).toString(2)).substr(-8);
    }
    console.log(mstr);


    提示:
    1、参考w3school
    fromCharCode:可接受一个指定的 Unicode 值,然后返回一个字符串。
    charCodeAt:方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
    String.fromCharCode(65)      ==============    A
    'A'.charCodeAt(0)     =================    65
    2、进制之间的转换
    如二进制转换成十进制
    parseInt('01000001',2).toString(10)     ================     65
    如十进制转换成二进制(二进制由8位组成)
    ("00000000"+parseInt(65,10).toString(2)).substr(-8)    =============     01000001


  • 相关阅读:
    方法的重载
    this用法
    简单的随机数 代码和笔记
    java内存简单剖析
    day 28
    day 27
    day 26
    day 25
    day 24
    day 23
  • 原文地址:https://www.cnblogs.com/kuikui/p/2941177.html
Copyright © 2011-2022 走看看