XKCD Binary Heart Transcription+the SCH mystery
January 4th, 2009
Since I felt like having too much time, here’s a transcription of XKCD Binary Heart.
111011101100110010101 111001010011110111010 101101001011011000100 111101110110011001010 111100101101111011101 010110100101101100011 011110111011001100101 011110010100111101110 101011010010110110001 001111011101100110010 101111001010011110111 010101101001011011000 110111101110110011001 010111100101101111011 101010110100101101100 010011110111011001100 101011110010110111101 110101011010010110110 001001111011101100110 010101111001010011110 111010101101001011011 000100111101110110011
Interpreted as ASCII written with binary, it says:
iloveyOu ilOveyou iloveyOu ilOveyOu iloveyou ilOveyou ilOveyOu ilOv
That’s the easy part of the mystery. The tricky part is why the O’s are lower and upper case like that. I have no clue, but there’s a discussion on the XKCD forums . Someone called “kemosabi” posted a Perl snippet that produces the letters SCH:
#!/usr/bin/perl
while () {
$x .= $_;
}
$x =~ tr/01//cd;
$y = pack(”B*”, $x);
print “$y\n”;
$s = $y;
$s =~ tr/Oo/01/;
$s =~ tr/01/ /c;
print $s, “\n”;
$s =~ tr/01//cd;
print ” ” . join(” “, grep(/\d{5}/, split(/(\d{5})/, $s))), “\n”;
print ” 010 ” . join(” 010 “, grep(/\d{5}/, split(/(\d{5})/, $s))), “\n”;
#print $s, “\n”;
$s = “010″ . join(”010″, grep(/\d{5}/, split(/(\d{5})/, $s)));
print pack(”B*”, $s), “\n”;
__END__
011010010110110001101
111011101100110010101
111001010011110111010
101101001011011000100
111101110110011001010
111100101101111011101
010110100101101100011
011110111011001100101
011110010100111101110
101011010010110110001
001111011101100110010
101111001010011110111
010101101001011011000
110111101110110011001
010111100101101111011
101010110100101101100
010011110111011001100
101011110010110111101
110101011010010110110
001001111011101100110
010101111001010011110
111010101101001011011
000100111101110110011
Output
iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOv`
1 0 0 1 1 0 0 0 1 1 0 1 0 0 0
10011 00011 01000
010 10011 010 00011 010 01000
SCH
Fast forward a few episodes to this strip:

The three “pointers”, 0×3a28213a , 0×6339392c, 0×7363682e look a bit suspicious… Repeating bytes, MSB is never set. This smells ASCII!
Sure enough, here’s what it says:
:(!: c99, sch.
I don’t know what the first line means, maybe it’s a little joke in the style of UNIX shell tricks. The second line could possibly be referring to the C99 standard. And the last line is sch again. It’s no doubt related, but how? There could be a deeper meaning to the letters SCH, or it could just be a reference back to that forum post. What do you think?


January 10th, 2009 at 5:55 am
Lol! I never have thought there are hidden messages in xkcd comics (and I would never have the patience to bother deciphering anyways :P)
sch.. for scheisse
January 11th, 2009 at 4:17 am
Sure there are hidden messages. The first one you should know about is the tooltip. Hover the mouse over any of the strips to see it.
January 16th, 2009 at 2:25 pm
Oh yes, I know about the tooltip. It’s usually the funniest part of the comic
July 6th, 2009 at 7:38 am
Actually… the binary in the heart translates perfectly to: Ever want to send an encoded messsage that only a handful of people can actually crack the code? Well, look no further; my brain hurt when I made it and I still have a slight hangover… so, enjoy!
Not kidding…
July 6th, 2009 at 7:47 am
No it doesn’t… It simply doesn’t. (I stand by that until proven wrong)
July 6th, 2009 at 7:51 am
Fine… Insert this into any decoder (or decode yourself) and you will see. You can even cross reference it with the comic… I promise it is correct!
01101001011011000110111101110110011001010111001010011110111010101101001011011000100111101110110011001010111100101101111011101010110100101101100011011110111011001100101011110010100111101110101011010010110110001001111011101100110010101111001010011110111010101101001011011000110111101110110011001010111100101101111011101010110100101101100010011110111011001100101011110010110111101110101011010010110110001001111011101100110010101111001010011110111010101101001011011000100111101110110011
July 6th, 2009 at 8:00 am
Aww lawl.