Perfektes Timing für diese Frage. @isaacg hat heute eine neue Funktion hinzugefügt, mit der sich solche Zahlen immens verkürzen lassen.
Die grundlegende Technik besteht darin, die Zahl in Basis 256 umzuwandeln und in Zeichen umzuwandeln. Sie können dies mit dem Code tun ++NsCMjQ256N
. Sie können dann die resultierende Zeichenfolge in Kombination mit verwenden C
, was genau das Gegenteil bewirkt (Zeichen in int konvertieren und das Ergebnis als Basis-256-Zahl interpretieren). Sie erhalten also 13 Zeichen : C"2ìÙ½}ü¶d"
. Einige der Zeichen sind nicht druckbar.
Beachten Sie jedoch, dass ich 13 CHARS sagte, keine Bytes. Wenn ich die Zeichen kopiere und mit https://mothereff.in/byte-counter zähle , werden 13 Zeichen und 18 Bytes angezeigt. Dies ist auf die Zeichencodierung von Zeichen zurückzuführen, die standardmäßig UTF-8 ist. Und UTF-8 erlaubt nur 2 ^ 7 verschiedene 1-Byte-Zeichen. Jedes Zeichen c
mit wird ord(c) > 127
tatsächlich mit zwei Bytes anstelle von einem gespeichert.
Und hier kommt die neue Funktion von @ isaacg ins Spiel. Er änderte das Standardcodeformat von UTF-8 in iso-8859-1. iso-8859 kann 256 Zeichen mit nur 1 Byte darstellen. Jetzt können Sie also tatsächlich 13 BYTES erreichen. Dies ist jedoch nur mit dem Standard-Compiler möglich , dies funktioniert jedoch nicht im Online-Compiler.
Zuerst möchten Sie die Zahl mit diesem Skript in Hex-Werte konvertieren : jdm.[2.Hd"0"jQ256
. Das gibt dir 12 32 ec d9 bd 07 7d fc b6 64
. Kopieren Sie diese Zahlen anschließend mit einem Hex-Editor (z. B. Hexedit für Linux) in Ihre Codedatei.
Beachten:
- Offensichtlich entfernen Sie das
"
am Ende, wenn die Zeichenfolge der letzte Teil des Codes ist.
- Dies funktioniert nur, wenn die Basis-256-Darstellung Ihrer Zahlen kein
34
(das Byte 22
) enthält, da dies das "
Zeichen ist und die Zeichenfolge beendet wird. Escaping funktioniert allerdings ( 5C 22
).
- Übrigens, wenn Sie eine Datei mit einem Hex-Editor öffnen, sehen Sie wahrscheinlich das Byte
0A
oder 0d 0a
am Ende, das Sie entfernen können. Dies zeigt nur das Zeilenende an.
00
. Zusätzlich muss\
Byte5c
möglicherweise mit einem anderen `` maskiert werden oder nicht, abhängig vom Byte danach.