Skip to content

Instantly share code, notes, and snippets.

@maxinne-dev
Created January 18, 2022 00:33
Show Gist options
  • Save maxinne-dev/56c93fc6b49e8e3bcd090b71591de40f to your computer and use it in GitHub Desktop.
Save maxinne-dev/56c93fc6b49e8e3bcd090b71591de40f to your computer and use it in GitHub Desktop.
Algumas horas de hiperfoco depois...
=LET(
BASE_62;LET(MAI;CARACTUNICODE(SEQUÊNCIA(1;26;65));MIN;CARACTUNICODE(SEQUÊNCIA(1;26;97));NUM;CARACTUNICODE(SEQUÊNCIA(1;10;48));CONCAT(MAI;MIN;NUM));
B64_FINAL;{"-"\"_"};
BASE_64;CONCAT(BASE_62;B64_FINAL);
LARGURA_ORIGEM;8;
LARGURA_DEST;6;
RAW_BITS;LET(
BRUTO;B2;
TRECHO_INI;10;
TRECHO_QTD;9;
BRUTO_COUNT;NÚM.CARACT(BRUTO);
TRECHO;EXT.TEXTO(BRUTO;TRECHO_INI;TRECHO_QTD);
TRECHO_TAM;SE(
((TRECHO_INI-1)+TRECHO_QTD)>=BRUTO_COUNT;
TRECHO_QTD;
NÚM.CARACT(TRECHO)
);
TRECHO_SEQ;SEQUÊNCIA(1;TRECHO_TAM;1);
TRECHO_CHARS;EXT.TEXTO(TRECHO;TRECHO_SEQ;1);
TRECHO_BYTES;PROCURAR(TRECHO_CHARS;BASE_62;1);
TRECHO_BITS;DECABIN(TRECHO_BYTES;LARGURA_DEST);
BITS;CONCAT(TRECHO_BITS);
BIT_COUNT;NÚM.CARACT(BITS);
BITS_ALEM;MOD(BIT_COUNT;LARGURA_ORIGEM);
BIT_PADD;REPT("0";LARGURA_ORIGEM-BITS_ALEM);
RESULTADO;CONCAT(BIT_PADD;BITS);
RESULTADO
);
COUNT;NÚM.CARACT(RAW_BITS);
RESTO;MOD(COUNT;LARGURA_DEST);
RAND;ALEATÓRIOENTRE(
0;
BINADEC(REPT("1";(((INT(COUNT/LARGURA_DEST)+1)*LARGURA_DEST)-COUNT)))
);
MASK_FIM;DECABIN(RAND;LARGURA_DEST-RESTO);
SEXTETOS;LET(
SEQ;SEQUÊNCIA(1;10;0);
SEXTETOS;EXT.TEXTO(CONCAT(RAW_BITS;MASK_FIM);(SEQ*LARGURA_DEST)+1;LARGURA_DEST);
SEXTETOS
);
MASCARAR;{6\7\8};
MASKED_BITS;LET(
LARG_SEQ;SEQUÊNCIA(1;LARGURA_DEST;1);
MASC_SEQ;SEQUÊNCIA(1;COLS(MASCARAR);1);
MASK_FIM;DECABIN(RAND;LARGURA_DEST-RESTO);
PARA_MASK;TRANSPOR(ÍNDICE(SEXTETOS;1;MASCARAR+1));
MASK_BITS;EXT.TEXTO(TEXTO(MASK_FIM;"110000");SEQUÊNCIA(1;NÚM.CARACT(MASK_FIM)+2;1);1);
RASC;BITXOR(EXT.TEXTO(PARA_MASK;LARG_SEQ;1);MASK_BITS);
EXT.TEXTO(CONCAT(RASC);((MASC_SEQ-1)*LARGURA_DEST)+1;LARGURA_DEST)
);
ANTES_MASCARA;SEQUÊNCIA(1;ÍNDICE(MASCARAR;1;1);1);
PREPEND;ÍNDICE(SEXTETOS;1;ANTES_MASCARA);
DEPOIS_MASCARA;SEQUÊNCIA(
1;
COLS(SEXTETOS)-(ÍNDICE(MASCARAR;1;COLS(MASCARAR))+1);
ÍNDICE(MASCARAR;1;COLS(MASCARAR))+2
);
APPEND;ÍNDICE(SEXTETOS;1;DEPOIS_MASCARA);
SAIDA_SEQ;SEQUÊNCIA(1;COLS(PREPEND)+COLS(MASKED_BITS)+COLS(APPEND);1);
NOVOS_SEXTETOS;EXT.TEXTO(CONCAT(PREPEND;MASKED_BITS;APPEND);((SAIDA_SEQ-1)*LARGURA_DEST)+1;LARGURA_DEST);
LETRAS;EXT.TEXTO(BASE_64;BINADEC(NOVOS_SEXTETOS)+1;1);
RESULTADO;CONCAT(LETRAS);
RESULTADO
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment