You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化给定的混淆JavaScript单行代码为易读的常规JS代码

混淆JS代码还原说明

原混淆代码

return 12 === selector ? (data = data >> 4, outstring = outstring + String.fromCharCode(data)) : 18 === selector && (data = data >> 2, outstring = outstring + String.fromCharCode((65280 & data) >> 8), outstring = outstring + String.fromCharCode(255 & data)), outstring;

等价易读JS代码

这段代码用了三元运算符、逗号运算符、逻辑短路的特性做了压缩,拆分后逻辑清晰的版本如下:

if (selector === 12) {
    // data右移4位
    data = data >> 4;
    // 转换为对应字符追加到输出字符串
    outstring += String.fromCharCode(data);
} else if (selector === 18) {
    // data右移2位
    data = data >> 2;
    // 取data高8位转字符追加
    outstring += String.fromCharCode((65280 & data) >> 8);
    // 取data低8位转字符追加
    outstring += String.fromCharCode(255 & data);
}
// 其余selector值不对outstring做修改,直接返回
return outstring;

核心逻辑说明

  • 代码最终返回值是拼接完成的outstring字符串
  • 仅当selector为12或18时才会修改outstring,其余取值直接返回原有outstring
  • 65280对应的二进制是1111111100000000,和data做与运算的作用是提取data的高8位;255对应的二进制是0000000011111111,和data做与运算的作用是提取data的低8位

对应Python参考实现

如果你需要转成Python代码,可以参考以下写法:

if selector == 12:
    data = data >> 4
    outstring += chr(data)
elif selector == 18:
    data = data >> 2
    # 提取高8位转字符
    outstring += chr((65280 & data) >> 8)
    # 提取低8位转字符
    outstring += chr(255 & data)
return outstring

内容的提问来源于stack exchange,提问作者nihi nivi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:27:02