Uzun dize, ASCII'ye dönüştürülmüş bir ikili dizidir. İlk for
ifade b
10'da başlar ve [b+++21]
sonra dize 31 verir. Dizeye bir dizi olarak işlendiğinde, ofset 31, dizedeki "gerçek" verilerin başlangıcıdır (sağladığınız kod örneğindeki ikinci satır). Kodun geri kalanı, bit dizisi arasında dolaşır ve 1'leri ve 0'ları! Ve boşluklarına dönüştürür ve her seferinde bir karakter yazdırır.
Daha az gizlenmiş sürüm:
#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ı olduğu putchar
ifadeleri. İlkini al putchar
. ASCII 'Z'
ondalık olarak 90'dır, bu nedenle yeni satır karakteri olan 90/9 = 10'dur. İkincisinde, ondalık 33 ASCII'dir '!'
. Düşük dereceli 33 biti değiştirmek, size bir boşluk için ASCII olan 32 verir. Bu tuhafsa !
yazdırılmaya b
ve düzse boş bir alana yazdırılmaya neden olur b
. Kodun geri kalanı a
dize boyunca "işaretçi" yürümek için sadece orada .