Momento perfeito para esta pergunta. A @isaacg acabou de adicionar um novo recurso hoje, que permite reduzir imensamente esses números.
A técnica básica é converter o número na base 256 e convertê-lo em caracteres. Você pode fazer isso usando o código ++NsCMjQ256N
. Você pode usar a sequência resultante em combinação com C
, que faz exatamente o oposto (converter caracteres em int e interpretar o resultado como número da base 256). De modo a obter 13 caracteres: C"2ìÙ½}ü¶d"
. Alguns dos caracteres não são imprimíveis.
Mas observe que eu disse 13 CHARS, não bytes. Se eu copiar os caracteres e contar com https://mothereff.in/byte-counter , ele diz 13 caracteres e 18 bytes. Isso ocorre devido à codificação de caracteres dos caracteres, que é UTF-8 por padrão. E o UTF-8 permite apenas 2 ^ 7 caracteres diferentes de 1 byte. Cada caractere c
com ord(c) > 127
é armazenado usando dois bytes em vez de um.
E aqui está o novo recurso de @ isaacg . Ele mudou o formato de código padrão de UTF-8 para iso-8859-1. O iso-8859 pode representar 256 caracteres com apenas 1 byte. Então agora você pode alcançar 13 BYTES. Isso só é possível com o compilador padrão , mas isso não funciona no compilador online.
Primeiro você deseja converter o número para valores hexadecimais usando este script: jdm.[2.Hd"0"jQ256
. Isso te dá 12 32 ec d9 bd 07 7d fc b6 64
. Depois copie esses números no seu arquivo de código usando um editor hexadecimal (por exemplo, hexedit para linux).
Aviso prévio:
- Obviamente, você remove o
"
no final, se a string for a última parte do código.
- Isso funciona apenas se não houver
34
(o byte 22
) na representação base-256 de seus números, pois esse é o "
caractere e terminará a sequência. Escapar funciona embora ( 5C 22
).
- Aliás, quando você abre um arquivo com um editor hexadecimal, provavelmente verá o byte
0A
ou 0d 0a
no final, que pode ser removido. Isso indica apenas o fim da linha.
00
. Além disso,\
byte5c
, pode ou não precisar ser escapado com outro ``, dependendo do byte após ele.