Difference between revisions of "Key compression"
Jump to navigation
Jump to search
(New page: '''Compress Keys of all sorts''' This function set will both compress and decompress a key. I've seen size cut down by anywhere from 25 - 50% <lsl> string alphanum = "0123456789ABCDEFGHI...) |
(Replaced <source> with <syntaxhighlight>) |
||
(8 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{Merge|Key_Compression}} | |||
'''Compress Keys of all sorts''' | '''Compress Keys of all sorts''' | ||
<syntaxhighlight lang="lsl2"> | |||
string strFullCompression = "0123456789abcdefghijklmnopqrstuvwxyz!\"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅ"; | |||
< | |||
string | |||
string compressKey(key id){ | string compressKey(key id){ | ||
string str = (string)llParseString2List((string)id,["-"],[]); | string str = (string)llParseString2List((string)id,["-"],[]); | ||
Line 12: | Line 11: | ||
integer len = llStringLength(str); | integer len = llStringLength(str); | ||
while(i < len){ | while(i < len){ | ||
integer val = llSubStringIndex( | integer val = llSubStringIndex(strFullCompression,(llGetSubString(str,i,i))); | ||
++i; | ++i; | ||
integer val2 = llSubStringIndex( | integer val2 = llSubStringIndex(strFullCompression,(llGetSubString(str,i,i))); | ||
val *= 16; | |||
val += val2; | |||
output += llGetSubString(strFullCompression,val,val); | |||
++i; | ++i; | ||
} | } | ||
Line 35: | Line 28: | ||
string output; | string output; | ||
while(i < len){ | while(i < len){ | ||
integer indx = llSubStringIndex( | integer indx = llSubStringIndex(strFullCompression,llGetSubString(compressed,i,i)); | ||
integer val1 = (integer)indx / 16; | |||
integer val2 = indx % 16; | |||
output += llGetSubString(strFullCompression,val1,val1) + llGetSubString(strFullCompression,val2,val2); | |||
++i; | ++i; | ||
} | } | ||
Line 48: | Line 37: | ||
return llGetSubString(llInsertString(llInsertString(llInsertString(llInsertString(llInsertString(llToLower(output),12,""),8,"-"),13,"-"),18,"-"),23,"-"),0,35); | return llGetSubString(llInsertString(llInsertString(llInsertString(llInsertString(llInsertString(llToLower(output),12,""),8,"-"),13,"-"),18,"-"),23,"-"),0,35); | ||
} | } | ||
</ | </syntaxhighlight> | ||
This code is modified by SiRiS Asturias for efficiency, I have both here because on the mono they're both giving consistent but different outputs.. It's for reference. | |||
<syntaxhighlight lang="lsl2"> | |||
string strFullCompression = "0123456789abcdefghijklmnopqrstuvwxyz!\"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅ"; | |||
string compressKey(key id){ | |||
id = (string)llParseString2List(id,(list)"-",[]); | |||
integer i = llStringLength(id); | |||
string output; | |||
while(i--){ | |||
integer val = llSubStringIndex(strFullCompression,llGetSubString(id,i,i)) + (llSubStringIndex(strFullCompression,llGetSubString(id,i,i--)) << 4 ); | |||
output += llGetSubString(strFullCompression,val,val); | |||
//++i; | |||
} | |||
return output; | |||
} | |||
string decompressKey(string compressed){ | |||
integer i = llStringLength(compressed); | |||
string output; while(i--){ | |||
integer indx = llSubStringIndex(strFullCompression,llGetSubString(compressed,i,i)); | |||
integer val1 = (integer)(indx >> 4); | |||
integer val2 = indx % 16; | |||
output += llGetSubString(strFullCompression,val2,val2) + llGetSubString(strFullCompression,val1,val1); | |||
} | |||
return llGetSubString(llInsertString(llInsertString(llInsertString(llInsertString(output,8,"-"),13,"-"),18,"-"),23,"-"),0,35); | |||
} | |||
</syntaxhighlight> |
Latest revision as of 00:34, 14 September 2022
It has been proposed that this page or section be merged with Key_Compression. (Discuss) |
Compress Keys of all sorts
string strFullCompression = "0123456789abcdefghijklmnopqrstuvwxyz!\"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅ";
string compressKey(key id){
string str = (string)llParseString2List((string)id,["-"],[]);
integer i;
string output;
integer len = llStringLength(str);
while(i < len){
integer val = llSubStringIndex(strFullCompression,(llGetSubString(str,i,i)));
++i;
integer val2 = llSubStringIndex(strFullCompression,(llGetSubString(str,i,i)));
val *= 16;
val += val2;
output += llGetSubString(strFullCompression,val,val);
++i;
}
return output;
}
string decompressKey(string compressed){
integer i;
integer len = llStringLength(compressed);
string output;
while(i < len){
integer indx = llSubStringIndex(strFullCompression,llGetSubString(compressed,i,i));
integer val1 = (integer)indx / 16;
integer val2 = indx % 16;
output += llGetSubString(strFullCompression,val1,val1) + llGetSubString(strFullCompression,val2,val2);
++i;
}
return llGetSubString(llInsertString(llInsertString(llInsertString(llInsertString(llInsertString(llToLower(output),12,""),8,"-"),13,"-"),18,"-"),23,"-"),0,35);
}
This code is modified by SiRiS Asturias for efficiency, I have both here because on the mono they're both giving consistent but different outputs.. It's for reference.
string strFullCompression = "0123456789abcdefghijklmnopqrstuvwxyz!\"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅ";
string compressKey(key id){
id = (string)llParseString2List(id,(list)"-",[]);
integer i = llStringLength(id);
string output;
while(i--){
integer val = llSubStringIndex(strFullCompression,llGetSubString(id,i,i)) + (llSubStringIndex(strFullCompression,llGetSubString(id,i,i--)) << 4 );
output += llGetSubString(strFullCompression,val,val);
//++i;
}
return output;
}
string decompressKey(string compressed){
integer i = llStringLength(compressed);
string output; while(i--){
integer indx = llSubStringIndex(strFullCompression,llGetSubString(compressed,i,i));
integer val1 = (integer)(indx >> 4);
integer val2 = indx % 16;
output += llGetSubString(strFullCompression,val2,val2) + llGetSubString(strFullCompression,val1,val1);
}
return llGetSubString(llInsertString(llInsertString(llInsertString(llInsertString(output,8,"-"),13,"-"),18,"-"),23,"-"),0,35);
}