V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
pyengwoei
V2EX  ›  JavaScript

付费简化或者翻译这一小段 JS 代码。

  •  
  •   pyengwoei · 2016-06-30 17:53:09 +08:00 · 2737 次点击
    这是一个创建于 3103 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这是代码,没有混淆的,只是命名都是以单字母的
    功能就是解密一段字符串
    for 循环里面的变量太多了,还包含了很多函数
    所以看不太明白
    能简化成通俗易懂的格式或者直接翻译成 C# 或者 Python 的 联系我 QQ:1069689491
    12 条回复    2016-07-01 09:31:58 +08:00
    realpg
        1
    realpg  
       2016-06-30 18:47:43 +08:00
    这还不是混淆的……
    233333
    b821025551b
        2
    b821025551b  
       2016-06-30 18:48:44 +08:00
    这还不是混淆?那什么是混淆?
    yaochiqkl
        3
    yaochiqkl  
       2016-06-30 19:12:55 +08:00
    你应该说出多少钱 233
    xqin
        4
    xqin  
       2016-06-30 19:17:02 +08:00
    javascript
    ```

    DecodeSomething = function(type, str) {
    //如果没有传入类型或者字符串(str), 则返回 空数组
    if (!type || void 0 === str){
    return [];
    }

    var decode = function(str) {
    var b,
    c = [],
    d = 3,
    e = function(a) {//如果字符在 0-9 之间, 则返回它所对应的数字
    if(a >= "0" && "9" >= a){
    return parseInt(a, 10);
    }else{//否则返回 它的 unicode 值 减去 87
    return a.charCodeAt(0) - 87;
    }
    }, f = function(str, index) {
    var c = e(str[index]),
    d = e(str[index + 1]) & 15,
    f = (12 & c) >> 2,
    g = (2 & c) > 0,
    h = (1 & c) > 0;

    return {
    playerPair: g,
    winner: f,
    bankerPair: h,
    value: d
    }
    };

    //遍历字符串
    for (var index = 0; index < str.length - 1; index += 2){//一次处理两个字符
    b = f(str, index);

    if(b.winner !== d){//如果 winner 的值 不等于 3
    c.push(b);//则添加到 数组 c 里面
    }else{
    c = [];//否则 清空数组
    }
    }

    return c;//返回数组 c
    };


    switch (type) {
    case "7bal":
    case "bal":
    return decode(str);
    case "rol":
    case "rofl":
    return str.split(";").map(function(val) {
    return {
    result: val
    }
    });
    default:
    return str
    }
    }

    var a = "60o0749460o07134482";
    console.log(JSON.stringify(DecodeSomething("bal", a)));
    ```

    python
    ```
    import string, json


    def char2int(s):
    if s >= '0' and s <= '9':
    return int(s)
    else:
    return ord(s) - 87


    def decode(str):
    c = char2int(str[0])
    d = char2int(str[1]) & 15
    f = (12 & c) >> 2
    g = (2 & c) > 0
    h = (1 & c) > 0

    return {'value': d, 'winner': f, 'playerPair': g, 'bankerPair': h}


    def DecodeSomething(type, data):
    c = []

    if type in ['7bal', 'bal']:
    for x in range(0, len(data) - 1, 2):
    d = decode(data[x:x+2])

    if d['winner'] != 3:
    c.append(d)
    else:
    c = []

    return c

    elif type in ['rol', 'rofl']:
    d = data.split(";")

    for x in d:
    c.append({"result": x})

    return c
    else:
    return data


    print json.dumps(DecodeSomething("bal", "60o0749460o07134482"))

    print json.dumps(DecodeSomething("rol", "aa2;asd;42"))
    ```


    以上内容已发到你的 QQ 邮箱(鉴于 V2EX 对于回复的内容里有代码不够友好的原因, 发邮件给你了).
    GhostEX
        5
    GhostEX  
       2016-06-30 19:21:24 +08:00   ❤️ 1
    ``` javascript

    DecodeSomething = function(type, str) {
    //如果没有传入类型或者字符串(str), 则返回 空数组
    if (!type || void 0 === str){
    return [];
    }

    var decode = function(str) {
    var b,
    c = [],
    d = 3,
    e = function(a) {//如果字符在 0-9 之间, 则返回它所对应的数字
    if(a >= "0" && "9" >= a){
    return parseInt(a, 10);
    }else{//否则返回 它的 unicode 值 减去 87
    return a.charCodeAt(0) - 87;
    }
    }, f = function(str, index) {
    var c = e(str[index]),
    d = e(str[index + 1]) & 15,
    f = (12 & c) >> 2,
    g = (2 & c) > 0,
    h = (1 & c) > 0;

    return {
    playerPair: g,
    winner: f,
    bankerPair: h,
    value: d
    }
    };

    //遍历字符串
    for (var index = 0; index < str.length - 1; index += 2){//一次处理两个字符
    b = f(str, index);

    if(b.winner !== d){//如果 winner 的值 不等于 3
    c.push(b);//则添加到 数组 c 里面
    }else{
    c = [];//否则 清空数组
    }
    }

    return c;//返回数组 c
    };


    switch (type) {
    case "7bal":
    case "bal":
    return decode(str);
    case "rol":
    case "rofl":
    return str.split(";").map(function(val) {
    return {
    result: val
    }
    });
    default:
    return str
    }
    }

    var a = "60o0749460o07134482";
    console.log(JSON.stringify(DecodeSomething("bal", a)));
    ```

    python
    ```
    import string, json


    def char2int(s):
    if s >= '0' and s <= '9':
    return int(s)
    else:
    return ord(s) - 87


    def decode(str):
    c = char2int(str[0])
    d = char2int(str[1]) & 15
    f = (12 & c) >> 2
    g = (2 & c) > 0
    h = (1 & c) > 0

    return {'value': d, 'winner': f, 'playerPair': g, 'bankerPair': h}


    def DecodeSomething(type, data):
    c = []

    if type in ['7bal', 'bal']:
    for x in range(0, len(data) - 1, 2):
    d = decode(data[x:x+2])

    if d['winner'] != 3:
    c.append(d)
    else:
    c = []

    return c

    elif type in ['rol', 'rofl']:
    d = data.split(";")

    for x in d:
    c.append({"result": x})

    return c
    else:
    return data


    print json.dumps(DecodeSomething("bal", "60o0749460o07134482"))

    print json.dumps(DecodeSomething("rol", "aa2;asd;42"))
    ```
    GhostEX
        6
    GhostEX  
       2016-06-30 19:21:58 +08:00
    奇怪 好像 markdown 不支持?
    zhuangzhuang1988
        7
    zhuangzhuang1988  
       2016-06-30 19:38:20 +08:00
    访问不了 gist..
    XadillaX
        8
    XadillaX  
       2016-06-30 19:41:42 +08:00
    那什么是混淆 2333333
    loudis
        9
    loudis  
       2016-06-30 19:49:49 +08:00
    还好了,不长
    Light3
        10
    Light3  
       2016-06-30 19:53:59 +08:00
    大哥参数都 abcd 了 还不混淆。
    pyengwoei
        11
    pyengwoei  
    OP
       2016-07-01 09:31:23 +08:00
    @xqin 谢谢了 非常感谢 可以加个 QQ 多个朋友 呵呵
    pyengwoei
        12
    pyengwoei  
    OP
       2016-07-01 09:31:58 +08:00
    @zhuangzhuang1988 要梯子
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   917 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:30 · PVG 05:30 · LAX 13:30 · JFK 16:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.