JSFiddle - React, Tailwind, and code Playground

by karthick6891

HTML

<h1>Encode/Decode 400 ASCII chars in a tweet</h1>
<pre>
// Encoder
window.e=function(source,i,tmp,result){
  tmp = "";
  result = "";
  for(i in source){
    tmp += (0+source.charCodeAt(i).toString(2)).slice(-7);
  }
  for(i = 0; tmp; tmp = tmp.slice(10)){
    result += String.fromCharCode((i++ % 2 ? 0xDC00 : 0xD800) + parseInt(tmp.substring(0, 10), 2));
  }
  return result;
}

// Decoder
window.d=function(source,i,tmp,result){
  tmp = "";
  result = "";
  for(i = 0; i < 400; ){
    tmp = tmp.slice(7) + source.charCodeAt(i++).toString(2).slice(-10);
    result += String.fromCharCode(parseInt(tmp.substring(0, 7), 2));
  }
  return result;
}

JavaScript

// encoder (140 chars)
eval(unescape(escape("𩐽𩡵𫡣𭁩𫱮𚁥𛁣𛁢𛁤𚑻𩀽𨠽𘠢𞱦𫱲𚁣𘁩𫠠𩐩𨠫🐨𜀫𩐮𨱨𨑲𠱯𩁥𠑴𚁣𚐮𭁯𤱴𬡩𫡧𚀲𚐩𛡳𫁩𨱥𚀭𝰩𞱦𫱲𚁣🐰𞱢𞱢👢𛡳𫁩𨱥𚀱𜀩𚑤𚰽𤱴𬡩𫡧𛡦𬡯𫑃𪁡𬡃𫱤𩐨𚁣𚰫𙐲🰵𝠳𜠰𞠵𝐲𞐶𚐫𬁡𬡳𩑉𫡴𚁢𛡳𭑢𬱴𬡩𫡧𚀰𛀱𜀩𛀲𚐩𞱲𩑴𭑲𫠠𩁽").replace(/uD./g,'')))

// Decoder (124 chars)
eval(unescape(escape("𩀽𩡵𫡣𭁩𫱮𚁥𛁤𛁢𛁣𚑻𨰽𨠽𘠢𞱦𫱲𚁤🐰𞰴𜀰🡤𞰩𨠽𨠮𬱬𪑣𩐨𝰩𚱥𛡣𪁡𬡃𫱤𩑁𭀨𩀫𚰩𛡴𫱓𭁲𪑮𩰨𜠩𛡳𫁩𨱥𚀭𜐰𚐬𨰫👓𭁲𪑮𩰮𩡲𫱭𠱨𨑲𠱯𩁥𚁰𨑲𬱥𢑮𭀨𨠮𬱵𨡳𭁲𪑮𩰨𜀬𝰩𛀲𚐩𞱲𩑴𭑲𫠠𨱽").replace(/uD./g,'')))


// Test
str="Soleo saepe ante oculos ponere, idque libenter crebris usurpare sermonibus, omnis nostrorum imperatorum, omnis exterarum gentium potentissimorumque populorum, omnis clarissimorum regum res gestas, cum tuis nec contentionum magnitudine nec numero proeliorum nec varietate regionum nec celeritate conficiendi nec dissimilitudine bellorum posse conferri; nec vero disiunctissimas terras citius passibus."; // => 400 chars

console.log(e(str)); // => 140 chars

console.log(d(e(str))); // => 400 chars (same as str)