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 };
}