百度图片url解码

java script

i = function () {
    var t = {
      w: 'a',
      k: 'b',
      v: 'c',
      1: 'd',
      j: 'e',
      u: 'f',
      2: 'g',
      i: 'h',
      t: 'i',
      3: 'j',
      h: 'k',
      s: 'l',
      4: 'm',
      g: 'n',
      5: 'o',
      r: 'p',
      q: 'q',
      6: 'r',
      f: 's',
      p: 't',
      7: 'u',
      e: 'v',
      o: 'w',
      8: '1',
      d: '2',
      n: '3',
      9: '4',
      c: '5',
      m: '6',
      0: '7',
      b: '8',
      l: '9',
      a: '0',
      _z2C$q: ':',
      '_z&e3B': '.',
      AzdH3F: '/'
    },
    n = /([a-w\d])/g,
    r = /(_z2C\$q|_z&e3B|AzdH3F)/g;
    return {
      compile: function (t) {
        if (!t) return '';
        for (var e = (t.charCodeAt(0) + t.length).toString(16), n = 1; n < t.length; n++) e += 'g' + (t.charCodeAt(n) + t.charCodeAt(n - 1)).toString(16);
        return e
      },
      uncompile: function (e) {
        if (!e) return '';
        var i = e.replace(r, function (e, n) {
          return t[n]
        });
        return i.replace(n, function (e, n) {
          return t[n]
        })
      },

转译为C++

std::pair<char *,char *> uncompress_baidu_image(char * begin,const char * const end) {
    if (false==(end>begin)) { return{ nullptr,nullptr }; }

    constexpr static char baidu_image_uncompress_table[]={
        /*0*/static_cast<char>(0),
        /*1*/static_cast<char>(1),
        /*2*/static_cast<char>(2),
        /*3*/static_cast<char>(3),
        /*4*/static_cast<char>(4),
        /*5*/static_cast<char>(5),
        /*6*/static_cast<char>(6),
        /*7*/static_cast<char>(7),
        /*8*/static_cast<char>(8),
        /*9*/static_cast<char>(9),
        /*10*/static_cast<char>(10),
        /*11*/static_cast<char>(11),
        /*12*/static_cast<char>(12),
        /*13*/static_cast<char>(13),
        /*14*/static_cast<char>(14),
        /*15*/static_cast<char>(15),
        /*16*/static_cast<char>(16),
        /*17*/static_cast<char>(17),
        /*18*/static_cast<char>(18),
        /*19*/static_cast<char>(19),
        /*20*/static_cast<char>(20),
        /*21*/static_cast<char>(21),
        /*22*/static_cast<char>(22),
        /*23*/static_cast<char>(23),
        /*24*/static_cast<char>(24),
        /*25*/static_cast<char>(25),
        /*26*/static_cast<char>(26),
        /*27*/static_cast<char>(27),
        /*28*/static_cast<char>(28),
        /*29*/static_cast<char>(29),
        /*30*/static_cast<char>(30),
        /*31*/static_cast<char>(31),
        /*32*/static_cast<char>(32),
        /*33*/static_cast<char>(33),
        /*34*/static_cast<char>(34),
        /*35*/static_cast<char>(35),
        /*36*/static_cast<char>(36),
        /*37*/static_cast<char>(37),
        /*38*/static_cast<char>(38),
        /*39*/static_cast<char>(39),
        /*40*/static_cast<char>(40),
        /*41*/static_cast<char>(41),
        /*42*/static_cast<char>(42),
        /*43*/static_cast<char>(43),
        /*44*/static_cast<char>(44),
        /*45*/static_cast<char>(45),
        /*46*/static_cast<char>(46),
        /*47*/static_cast<char>(47),
        /*'0'*/static_cast<char>('7'),
        /*'1'*/static_cast<char>('d'),
        /*'2'*/static_cast<char>('g'),
        /*'3'*/static_cast<char>('j'),
        /*'4'*/static_cast<char>('m'),
        /*'5'*/static_cast<char>('o'),
        /*'6'*/static_cast<char>('r'),
        /*'7'*/static_cast<char>('u'),
        /*'8'*/static_cast<char>('1'),
        /*'9'*/static_cast<char>('4'),
        /*58*/static_cast<char>(58),
        /*59*/static_cast<char>(59),
        /*60*/static_cast<char>(60),
        /*61*/static_cast<char>(61),
        /*62*/static_cast<char>(62),
        /*63*/static_cast<char>(63),
        /*64*/static_cast<char>(64),
        /*65*/static_cast<char>(65),
        /*66*/static_cast<char>(66),
        /*67*/static_cast<char>(67),
        /*68*/static_cast<char>(68),
        /*69*/static_cast<char>(69),
        /*70*/static_cast<char>(70),
        /*71*/static_cast<char>(71),
        /*72*/static_cast<char>(72),
        /*73*/static_cast<char>(73),
        /*74*/static_cast<char>(74),
        /*75*/static_cast<char>(75),
        /*76*/static_cast<char>(76),
        /*77*/static_cast<char>(77),
        /*78*/static_cast<char>(78),
        /*79*/static_cast<char>(79),
        /*80*/static_cast<char>(80),
        /*81*/static_cast<char>(81),
        /*82*/static_cast<char>(82),
        /*83*/static_cast<char>(83),
        /*84*/static_cast<char>(84),
        /*85*/static_cast<char>(85),
        /*86*/static_cast<char>(86),
        /*87*/static_cast<char>(87),
        /*88*/static_cast<char>(88),
        /*89*/static_cast<char>(89),
        /*90*/static_cast<char>(90),
        /*91*/static_cast<char>(91),
        /*92*/static_cast<char>(92),
        /*93*/static_cast<char>(93),
        /*94*/static_cast<char>(94),
        /*95*/static_cast<char>(95),
        /*96*/static_cast<char>(96),
        /*'a'*/static_cast<char>('0'),
        /*'b'*/static_cast<char>('8'),
        /*'c'*/static_cast<char>('5'),
        /*'d'*/static_cast<char>('2'),
        /*'e'*/static_cast<char>('v'),
        /*'f'*/static_cast<char>('s'),
        /*'g'*/static_cast<char>('n'),
        /*'h'*/static_cast<char>('k'),
        /*'i'*/static_cast<char>('h'),
        /*'j'*/static_cast<char>('e'),
        /*'k'*/static_cast<char>('b'),
        /*'l'*/static_cast<char>('9'),
        /*'m'*/static_cast<char>('6'),
        /*'n'*/static_cast<char>('3'),
        /*'o'*/static_cast<char>('w'),
        /*'p'*/static_cast<char>('t'),
        /*'q'*/static_cast<char>('q'),
        /*'r'*/static_cast<char>('p'),
        /*'s'*/static_cast<char>('l'),
        /*'t'*/static_cast<char>('i'),
        /*'u'*/static_cast<char>('f'),
        /*'v'*/static_cast<char>('c'),
        /*'w'*/static_cast<char>('a'),
        /*120*/static_cast<char>(120),
        /*121*/static_cast<char>(121),
        /*122*/static_cast<char>(122),
        /*123*/static_cast<char>(123),
        /*124*/static_cast<char>(124),
        /*125*/static_cast<char>(125),
        /*126*/static_cast<char>(126),
        /*127*/static_cast<char>(127),
    };

#ifdef NDEBUG
#else
    for (auto varTest=begin; varTest<end; ++varTest) {
        assert((*varTest)<127);
        assert((*varTest)>0);
    }
#endif

    const char * const map_table=baidu_image_uncompress_table;
    char * const ans_begin=begin;
    char * read=begin;
    char * write=begin;

    if ((end-begin)>5) {
        char current_char;
        const char * const last_replace_multi=end-5;
        for (; read<last_replace_multi; ++write) {
            current_char=*read;
            if (current_char=='_') {
                begin=read;
                if (*(++begin)=='z') {
                    if (*(++begin)=='2') {
                        if (*(++begin)=='C') {
                            if (*(++begin)=='$') {
                                if (*(++begin)=='q') {
                                    *write=':';
                                    read+=6;
                                    continue;
                                }
                            }
                        }
                    }
                    else if (*begin=='&') {
                        if (*(++begin)=='e') {
                            if (*(++begin)=='3') {
                                if (*(++begin)=='B') {
                                    *write='.';
                                    read+=6;
                                    continue;
                                }
                            }
                        }
                    }
                }
            }
            else if (current_char=='A') {
                begin=read;
                if (*(++begin)=='z') {
                    if (*(++begin)=='d') {
                        if (*(++begin)=='H') {
                            if (*(++begin)=='3') {
                                if (*(++begin)=='F') {
                                    *write='/';
                                    read+=6;
                                    continue;
                                }
                            }
                        }
                    }
                }
            }
            *write=*(map_table+current_char);
            ++read;
        }
    }

    for (; read<end; ++write) {
        *write=*(map_table+(*read));
        ++read;
    }

    return{ ans_begin,write };

}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值