7Bit nach 8Bit umrechnen (PDU Modus einer SMS)

OP #705486
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
Gast
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
Angehängte Dateien:
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.