//escape2 转义字符串 var s = string; var r = raw; s.escape2 = class { ctor(t,e){ if(e!==null) { if(e==='\0'){ var a = {}; for(i=1;0xFF) ..table.push(a,s.escape2(t,s.pack(i))); ..table.sort(a,lambda(next) #owner < #next); return a[1]; } return "\0" + s.replace( e++s.escape2('\0'+e++t),".",lambda(c) s.format("\%d",c[1]) ); } if(t[1] : !t[2]) return t; var p = r.convert(t,{byte h;byte p}).p; var b = r.buffer(#t-2); for(i=3;#t) b[i-2] = t[i] ^ p; return tostring(b); }; } s.escape2.unescape = function(v){ if( v ? s.startWith(v,"\0") ){ return s.unescape(v); } return v; } s.escape2.escape = function(v){ if( v ? v[1]==0 ){ return s.replace(v,".",lambda(c) s.format("\%d",c[1]) ); } return v; } //@guide [使用范例](doc://example/Text/Crypt/escape2.aardio) /*****intellisense() string.escape2.unescape(__) = 如果参数指定的字符串前两个字符以 "\0" 开始则还原转义。 string.escape2.escape(__) = 如果参数指定的字符串第一个字节码为 0 则转为转义字符串。 string.escape2( = 生成或还原 escape2 格式字符串,可兼容普通字符串。\n将普通的字符串作为唯一参数就会直接返回。\n将 escape2 编码的字符串作为唯一参数会复原后再返回。 string.escape2(.(str,'\0') = 将参数 str 指定的字符串 escape2 编码,并返回为 十进制转义格式。\n以所有除'\0'以外的单字节为 keyByte 进行 escape2 编码,\n并返回长度最短的结果。 string.escape2(.(str,keyByte) = 将参数 str 指定的字符串 escape2 编码,并返回为 十进制转义格式。 \n参数 keyByte 必须指定单个单字节字符。 string.escape2(.(str) = 将普通的字符串作为唯一参数时直接返回。\n将 escape2 编码的字符串作为唯一参数则会复原后再返回。\nescape2 格式字符串必须先取消转义,或者使用单引号包含转义字符串。\n\n\n字符串第一个字节码为零,第二个字节码非零则被识别为 escape2 格式。 end intellisense*****/