正常情况下 var aaa="\x00\x00\x00\x00\x42\xd4\x56\xff"; 这个变量应该是以上图片那样,但是我输出之后 却是\x00\x00\x00\x00\x42\xd4\x56\xff
testpwd(ss);
这个方法的ss参数就是我定义的aaa变量,如果这个方
法testpwd('\x00\x00\x00\x00\x42\xd4\x56\xf');
将变量值写死可以,但是如果定义变量,然后传入方法就不行了。首先说一下,这个方法是用来加密的,死变量可以加密成功,定义变量传入加密失败
有可以测试的DEMO没有,变量存储再传是没看出什么问题
定义变量是字符串,如果你要用"\"需要转义一下,所以可以这样定义 var aaa = "\x00\x00\x00\x00\x42\xd4\x56\xff";
//虽然不知道你要实现什么作用,但是知道你的错误在哪
//字符串中\x有着特殊的含义,表示以十六进制显示数据;
//所以你如果想直接使用"\x"字符串,那么要转义"\\x",这种形式输出的是字符串"\x"
function getSalt(str) {
for (var arr = [], i = 0; i < str.length; i += 2)//递归str
arr.push("\\x" + str.substr(i, 2));//依次每次截取两个字符,并加上前缀\x,加入到arr数组中;
arr = arr.join("");//不使用任何分隔符(默认分隔符是逗号)
alert(arr);
//return arr = arr.join(""),eval("var temp = '" + arr + "'"),temp;这句话整个就是错误的,不理解你的意图,如果想将结果作为temp的属性值,可以按下方写法
return {"temp":arr};
}
var str='\\x00\\x00\\x00\\x00\\x42\\xd4\\x56\\xff';
var value=getSalt(str);
alert(JSON.stringify(value));//{"temp":'\x00\x00\x00\x00\x42\xd4\x56\xff'},
//你也可以alert(value.temp);直接查看结果