Uzun dize, ASCII'ye dönüştürülen bir ikili dizidir. İlk for
bildirimi, b
ifadesini, 10 ve dize verildikten sonra [b+++21]
yapar. Dizeyi bir dizi olarak işleme, ofset 31 dizede "gerçek" verilerin başlangıcıdır (kod örneğindeki ikinci satır) sağlanan). Kodun geri kalanı sadece bit dizisinden geçer, 1'leri ve 0'ları! 'Ya ve boşluklara dönüştürür ve bir kerede bir karakter basar.
#include "stdio.h"
int main (void) {
int a=10, b=0, c=10;
char* bits ="TFy!QJu ROo TNn(ROo)SLq SLq ULo+UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^NBELPeHBFHT}TnALVlBLOFAkHFOuFETpHCStHAUFAgcEAelclcn^r^r\\tZvYxXyT|S~Pn SPm SOn TNn ULo0ULo#ULo-WHq!WFs XDt!";
a = bits[b];
while (a != 0) {
a = bits[b];
b++;
while (a > 64) {
a--;
if (++c == 'Z') {
c /= 9;
putchar(c);
} else {
putchar(33^(b & 0x01));
}
}
}
return 0;
}
garip
akıllı parçası putchar
tablolara geçerli:
Az versiyonunu karartılmış. İlk putchar
'u alın. ASCII 'Z'
, ondalık olarak 90'tır, yani 90/9 = 10, bir satırsonu karakteridir. İkincisi, ondalık 33, '!'
için ASCII'dir. 33'ün düşük sıralı bitini değiştirmek, bir alan için ASCII olan 32'yi size verir. Bu, b
tekilse !
'un yazdırılmasına neden olur ve b
ise bile yazdırılacak boş bir alan olur. Kodun geri kalanı sadece dize aracılığıyla "işaretçi" a
yürümek için var.
Çıkışın ekran görüntüsü? –
Sadece gizlenmiş C ... bu çılgınlığa adanmış bütün toplumlar var. – Mark
Çıkış: http: // codepad.org/ngiITeZ4 –