javascript has bit operators like &, |, ^, ~, <<, >>,....you can get the unicode value of chars in a string using String's charCode method

解决方案 »

  1.   

    <body>
    <SCRIPT LANGUAGE="JavaScript">
    <!--function String.prototype.stringToArray()  //串转为数组
    {
    var ar = new Array()
    for (var i=0 ; i<this.length ; i++)
    ar[i] = this.charCodeAt(i);
    return ar;
    }function Array.prototype.arrayToStringtring() //数组转为传
    {
    var str = "";
    for (var i=0 ; i<this.length ; i++)
    str += String.fromCharCode(this[i]);
    return str;
    }
    function Array.prototype.or(ar)  //数组或操作
    {
    var l = ar.length;
    var result = new Array();
    if (ar.length>this.length) l = this.length;
    for (var i=0;i<l;i++)
    result[i] = this[i] | ar[i];
    return result;
    }function Array.prototype.and(ar) //数组与操作
    {
    var l = ar.length;
    var result = new Array();
    if (ar.length>this.length) l = this.length;
    for (var i=0;i<l;i++)
    result[i] = this[i] & ar[i];
    return result;
    }var str1 = "string1"
    var str2 = "string2"ar1 = str1.stringToArray(); //转换为数组
    ar2 = str2.stringToArray();alert(str1 +" or " + str2 + " = " +  ar1.or(ar2).arrayToStringtring()) //数组的或操作
    alert(str1 +" and " + str2 + " = " +  ar1.and(ar2).arrayToStringtring()) //数组的与操作//-->
    </SCRIPT>
    </body>
      

  2.   

    是归纳,不是化简,hehe <SCRIPT LANGUAGE="JavaScript">
    <!--function String.prototype.or(str)  //数组或操作
    {
    var result="",l=Math.min(str.length,this.length);
    for (var i=0;i<l;i++)result+=String.fromCharCode(this.charCodeAt(i)|str.charCodeAt(i));
    return result;
    }function String.prototype.and(str) //数组与操作
    {
    var result="",l=Math.min(str.length,this.length);
    for (var i=0;i<l;i++)result+=String.fromCharCode(this.charCodeAt(i)&str.charCodeAt(i));
    return result;
    }var str1 = "string1"
    var str2 = "string2"alert(str1 +" or " + str2 + " = " +  str1.or(str2))
    alert(str1 +" and " + str2 + " = " + str1.and(str2))
    //-->
    </SCRIPT>
      

  3.   

    是归纳,不是化简,hehe <SCRIPT LANGUAGE="JavaScript">
    <!--function String.prototype.or(str)  //数组或操作
    {
    var result="",l=Math.min(str.length,this.length);
    for (var i=0;i<l;i++)result+=String.fromCharCode(this.charCodeAt(i)|str.charCodeAt(i));
    return result;
    }function String.prototype.and(str) //数组与操作
    {
    var result="",l=Math.min(str.length,this.length);
    for (var i=0;i<l;i++)result+=String.fromCharCode(this.charCodeAt(i)&str.charCodeAt(i));
    return result;
    }var str1 = "string1"
    var str2 = "string2"alert(str1 +" or " + str2 + " = " +  str1.or(str2))
    alert(str1 +" and " + str2 + " = " + str1.and(str2))
    //-->
    </SCRIPT>
      

  4.   

    是归纳,不是化简,hehe <SCRIPT LANGUAGE="JavaScript">
    <!--function String.prototype.or(str)  //数组或操作
    {
    var result="",l=Math.min(str.length,this.length);
    for (var i=0;i<l;i++)result+=String.fromCharCode(this.charCodeAt(i)|str.charCodeAt(i));
    return result;
    }function String.prototype.and(str) //数组与操作
    {
    var result="",l=Math.min(str.length,this.length);
    for (var i=0;i<l;i++)result+=String.fromCharCode(this.charCodeAt(i)&str.charCodeAt(i));
    return result;
    }var str1 = "string1"
    var str2 = "string2"alert(str1 +" or " + str2 + " = " +  str1.or(str2))
    alert(str1 +" and " + str2 + " = " + str1.and(str2))
    //-->
    </SCRIPT>
      

  5.   

    有没有办法可以按byte而不是按unicode字符处理?
      

  6.   

    呵呵,有秋水出现的地方要赶快躲。
    to silentlamb:本来就是按unicode处理的啊。试试:var str1 = "我去过北京了"
    var str2 = "你去过北京吗"
      

  7.   

    呵呵,有秋水出现的地方要赶快躲。to silentlamb:如果不处理非拉丁1字符集的字符,是否按unicode没有差异。如果要处理到的话,不按unicode怎么能分辩到底是两个拉丁1字符还是一个unicode字符呢?补充一下:
    function String.prototype.xor(str) //异或操作
    {
    var result="",l=Math.min(str.length,this.length);
    for (var i=0;i<l;i++)result+=String.fromCharCode(this.charCodeAt(i)^str.charCodeAt(i));
    return result;
    }var str1 = "我去过北京了1"
    var str2 = "1234567"
    var str3 = str1.xor(str2);  //第一次异或,加密(密钥是str2)
    alert(str3);
    var str3 = str3.xor(str2); //再异或,解密(同一个密钥)
    alert(str3);
    这就是对称加密的基本方法了。嗯,为这20分,学了不少东西呢。