Prinzipiell kann man ja anstatt Klartext zu übertragen seine Daten "packen". Also den vollen (8-Bit) oder auch reduzierten ASCII-Satz ausnutzen um seine Daten codiert zu übertragen.
Beispiel: ähnlich hex-Darstellung einfach ein "A" für die Zahl "10" senden
usw.
Bei 8-Bit könnte man kein Return+Linefeed (CR+LF) mehr nutzen
und die Daten sind bei einem Crash ggf. schwer zu rekonstruieren.
->7Bit/6Bit/5Bit könnten (zu)viel Rechenaufwand sein;
aber bei 4 Bit könntest du anstelle 255 ein "FF" senden, also jeweils das obere und untere nibble als hex rausschieben. Beispiel:
Code:
Wert= 200; // also binär wäre das 1100 1000
untere_nibble= (Wert & 0x0F)+48;
if (untere_nibble>57) untere_nibble=untere_nibble+7; // Falls A..F
obere_nibble= (Wert & 0xF0)+48;
if (obere_nibble>57) obere_nibble=obere_nibble+7; // Falls A..F
untere nibble wäre also 56 -> "8"
obere nibble wäre also 60+7=67 -> "C"
siehe auch ASCII-Tabelle
Funken würdest du für "200" also: "8C" -> ein Zeichen gespart.
Das dekodieren schenke ich mir jetzt mal 
Grüße,
S.
Lesezeichen