Forum: Compiler & IDEs 7Bit nach 8Bit umrechnen (PDU Modus einer SMS)


von Ronald H. (do7rh)


Lesenswert?

Hallo zusammen,

ich versuche mich gerade an einer Umrechnung vom 7Bit nach 8Bit wie es 
bei einer SMS im PDU Modus verwendet wird.
Ich habe verstanden, dass ich wenn ich ein 7Bit Wort habe noch das 1. 
Bit vom nächen Wort mit dran hängen muss um auf 8 zu kommen. Beim 
nächten dann die erten 2 Bits u.s.w.
Siehe: http://www.nobbi.com/sms_pdu.htm (ganz unten).
Leider stehe ich wohl ziemlich auf dem Schlauch um das in eine oder 
besser mehrere Scheifen zu packen.
Mein Ansatz ist: Ich brauch eine Schleife (außen) die schaut, ob ich das 
Ende vom String erreicht habe.
Eine weitere, die bei jedem Durchlauf hoch Zählt für die Stelle im 
String, wo das 8 Bit Wort gespeichert wird. Und jetzt hab ich leider 
keine Idee mehr, wie ich auf dem 2. 7Bit Wort die erste, zweite, dritte 
usw. Stelle mit zu den davor liegenden 7Bits nehme und mir so meine 8Bit 
baue.

Hoffe ich habs nicht zu umständlich erklärt, ansonsten --> Frag nach!


73

Ronald

von Jörg X. (Gast)


Angehängte Dateien:

Lesenswert?

Bist du weitergekommen?
Es sollte ja 'ungefähr' so gehen :D
1
uint16_t strTo7bit(const char* from, char* to)
2
{
3
    char curr, next;
4
    int8_t i=0;
5
    uint16_t length=1;
6
    next = *from++;
7
    while(next){
8
        curr = next;
9
        next = *from++;
10
        *to++ = (curr>>i)|(next<<(8-(++i)));
11
        i &= 0x07;
12
        length++;
13
    }
14
    *to = 0;
15
    return length;
16
}
ein kurzer Test am Pc (Anhang, mit MinGW getestet) sagt, dass es geht.

hth. Jörg

von Werner B. (Gast)


Lesenswert?

Was sehr oft hilft ist: Male es dir auf.

7  +------+------+------+------+------+------+------+------+
8  +-------+-------+-------+-------+-------+-------+-------+
   012345678

Nach 8 * 7 Bit, bzw. 7 * 8 Bit fängt's wieder von vorne an.
56 Bit = Kleinster gemeinsamer Teiler.

von WEIF (Gast)


Lesenswert?


von Ronald H. (do7rh)


Lesenswert?

Also ich mir jetzt mal den Code von Atmel vorgenommen und an mein 
Projekt angepasst. Werde ich später dann mal testen.
Vielen Dank!!!

von Philipp C. (ba4_philipp)


Lesenswert?

Läuft der Code gut bei Dir? Kann man also doch drauf verzichten was 
eigenes zu machen und lieber den Atmel kram erweitern?

Gruß Philipp

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.