为了账号安全,请及时绑定邮箱和手机立即绑定

js 16进制编码字符串拼接不等于硬编码值

js 16进制编码字符串拼接不等于硬编码值

斯蒂芬大帝 2018-11-30 23:18:45
var a = '\xe5\xbc\xdb\xe6\xca\xff\xec\xf9',b='\\x'+['e5','bc','db','e6','ca','ff','ec','f9'].join('\\x')// b eauqal a on literal, but b!=a
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

两者不相等的,\x 不能在运行时解析,当然如果用 eval 黑魔法的话

var a = '\xe5\xbc\xdb\xe6\xca\xff\xec\xf9';

eval(`var b = "\\x${['e5','bc','db','e6','ca','ff','ec','f9'].join('\\x')}"`)

a === b // true

正确的方式应该是用 String.fromCodePoint


String.fromCodePoint(...['e5','bc','db','e6','ca','ff','ec','f9'].map(el => parseInt(el, 16)))

查看完整回答
反对 回复 2018-12-31
  • 1 回答
  • 0 关注
  • 418 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号