javascript可以将字符串看成二进制字符做位操作吗? javascript has bit operators like &, |, ^, ~, <<, >>,....you can get the unicode value of chars in a string using String's charCode method 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <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> 是归纳,不是化简,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> 是归纳,不是化简,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> 是归纳,不是化简,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> 有没有办法可以按byte而不是按unicode字符处理? 呵呵,有秋水出现的地方要赶快躲。to silentlamb:本来就是按unicode处理的啊。试试:var str1 = "我去过北京了"var str2 = "你去过北京吗" 呵呵,有秋水出现的地方要赶快躲。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分,学了不少东西呢。 JS问题求解! 指定对象边框闪烁 dialogArguments无法得到对象 请问怎样利用radio显隐象文本框那样的控件 一个值得反思的“搞笑问题”-- JSVM观后感! 请问这句话改怎么转义? js+innerhtml问题 IE窗口最小化以后,如有新增贴子,IE窗口闪烁,如何实现? 如何做到自动刷新页面同时保留上一次页面中的变量值! JSP与JAVASCRIPT交互问题,如何实现?急死了,各位帮帮忙吧! 关于单选框的显示 為什麼isNaN(Date.parse("33/33/3333")反回值是true?
<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>
<!--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>
<!--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>
<!--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>
to silentlamb:本来就是按unicode处理的啊。试试:var str1 = "我去过北京了"
var str2 = "你去过北京吗"
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分,学了不少东西呢。