Bu soru için mükemmel zamanlama. @isaacg bugün bu sayıları son derece kısaltmayı sağlayan yeni bir özellik ekledi.
Temel teknik, sayıyı taban 256'ya ve karakterlere dönüştürmektir. Bunu kodu kullanarak yapabilirsiniz ++NsCMjQ256N. Ardından, sonuç dizesini Ctam tersini yapan (ile karakterleri int'e dönüştürün ve sonucu temel 256 sayısı olarak yorumlayın) ile birlikte kullanabilirsiniz. Yani 13 karakter olsun: C"2ìÙ½}ü¶d". Karakterlerin bazıları yazdırılamaz.
Ama 13 CHARS dediğime dikkat et, bayt değil. Karakterleri kopyalayıp https://mothereff.in/byte-counter ile sayarsam , 13 karakter ve 18 bayt yazıyor. Bunun nedeni varsayılan olarak UTF-8 olan karakterlerin karakter kodlamasıdır. UTF-8 sadece 2 ^ 7 farklı 1 baytlık karaktere izin verir. Her karakter cile ord(c) > 127aslında ikisini kullanıyor saklanan alır bir yerine bayt.
Ve işte @ isaacg'ın yeni özelliği devreye giriyor. Varsayılan kod formatını UTF-8'den iso-8859-1'e değiştirdi. iso-8859, sadece 1 baytlı 256 karakteri temsil edebilir. Böylece aslında 13 BYTE'ye ulaşabilirsiniz. Bu sadece standart derleyici ile mümkündür, ancak bu çevrimiçi derleyicide çalışmaz.
Öncelikle bu komut dosyasını kullanarak altıgen-değerlere sayı dönüştürmek istiyorum: jdm.[2.Hd"0"jQ256. Bu sana verir 12 32 ec d9 bd 07 7d fc b6 64. Daha sonra bu sayıları bir hex-editor (örn. Linux için hexedit) kullanarak kod dosyanıza kopyalayın.

Farkına varmak:
- Açıkça
", dize kodun son parçasıysa, sonunda kaldırın .
- Bu yalnızca sayıların taban-256 göstergesinde (
34bayt 22) yoksa çalışır , çünkü bu "karakterdir ve dizeyi sona erdirir. Kaçan olsa da çalışır ( 5C 22).
- Btw, onaltılık düzenleyici ile bir dosyayı açtığınızda muhtemelen bayt
0Aveya 0d 0asonunda kaldırabileceğiniz bir dosya göreceksiniz . Bu sadece satırın sonunu gösterir.