caoheike
2017-07-21 02:26
采纳率: 29.3%
浏览 809

js问题 大神求救,很怪异

图片说明

正常情况下 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');
将变量值写死可以,但是如果定义变量,然后传入方法就不行了。首先说一下,这个方法是用来加密的,死变量可以加密成功,定义变量传入加密失败

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 有可以测试的DEMO没有,变量存储再传是没看出什么问题

    打赏 评论
  • Yore Yuen 2017-07-21 02:35

    定义变量是字符串,如果你要用"\"需要转义一下,所以可以这样定义 var aaa = "\x00\x00\x00\x00\x42\xd4\x56\xff";

    打赏 评论
  • 张大教主 2017-07-21 05:27
    //虽然不知道你要实现什么作用,但是知道你的错误在哪
    //字符串中\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);直接查看结果
    
    打赏 评论

相关推荐 更多相似问题