Hexadezimal auf Terminal schreiben

Herakles

Profifragensteller
Moin!

Ich möchte gern einige Bytes per serieller Schnittstelle versenden. Diese Bytes haben aber hexadezimale Werte, ich kann sie also nicht in ASCII darstellen. Ein

Code:
echo "1234WHATEVER" > /dev/cuaa0

bringt mich also nicht weiter. Ich will in etwa sowas (VORSICHT! Das ist totaler Unsinn, ich möchte nur versuchen, meine Frage zu verdeutlichen!):

Code:
echo 0xab 0xcd > /dev/cuaa0

Hat jemand eine Ahnung, wie man sowas realisiert.

Danke für Eure Ideen,
Herakles
 
"Erst googlen, dann das Forum Deiner Wahl fragen!" - Den Satz sollte ich mir mal in den Kopf schlagen. Hier die Lösung:

Code:
echo $'\x31'

Das nimmt einen hexadezimalen Wert an. Die Ausgabe ist in diesem Fall eine "1", weil die 31 eben der ASCII-Code für einen '1' ist.

Danke an mich selbst.

Herakles
 
Dieses Phänomen ist bekannt. Erst wenn man das Problem ins Forum getickert hat, fällt einem selbst die Lösung ein :)
 
Jetzt wüsste ich mal gerne unter welcher Shell das funktionieren sollte.

Also meine ZSH sowie die doch recht weit verbreitete BASH können damit umgehen. Die CSH versteht da nur Bahnhof, genau so die TCSH. Die TCLsh hingegen kann das auch interpretieren... ;-)

Grüße!
 
für die KSH: echo -e "\x31"

Ups, muss mich korrigieren, das funktioniert nur mit GNU echo...

printf "\x31" funktioniert aber immer ;) (lässt auch den überflüssigen \n weg)
 
Back
Top