Vereinfacht gesagt wandelt `\detokenize` alle Token seines Arguments außer den Leerzeichen in Tokens der Klasse *other*. Die Leerzeichen bleiben Leerzeichen-Token. Interessant ist das vor allem deshalb, weil damit auch keine Befehle mehr expandiert werden. Beispiel:
\documentclass{article}
\begin{document}
{\ttfamily\detokenize{\das\ginge\ohne\detokenize\schief}}
\end{document}
Zu beachten ist dabei, dass hier die (nicht definierten) Befehle trotzdem zunächst als solche gelesen werden, es wird also zuerst ein Befehlstoken generiert. Dieses wird jedoch nicht als solches expandiert, sondern statt der Expansion in *other* Token gewandelt. Deshalb sind in der Ausgabe Leerzeichen. Das ist beispielsweise in der folgenden Situation wichtig:
\documentclass{article}
\begingroup
\catcode`\@=0 % @ ist jetzt ein Escape-Zeichen wie \
\gdef\test{\detokenize{@aber@was@passiert@hier}}
\endgroup
\begin{document}
\ttfamily\test
\end{document}
Wie man sieht, werden die Befehlstoken hier nicht mit `@`, sondern mit `\` ausgegeben, genau wie es bei sie auch von `\show` in die Log-Datei geschrieben oder von `\meaning` ausgegeben werden. Das ist nun einmal die interne TeX-Darstellung von Befehlstoken.
Befehlstoken (zumindest solange `\escapechar` nicht geändert wird).
Die genaue Beschreibung findet sich im [e-TeX-Manual][1], da es sich dabei um eine Erweiterung von e-TeX handelt.
[1]: http://mirrors.ctan.org/systems/e-tex/v2/doc/etex_man.pdf