- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 4 von 4

Thema: 8bit -> 7bit Zeichen Codierung für PDU Modus für Handys

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    8bit -> 7bit Zeichen Codierung für PDU Modus für Handys

    Hi @all,

    habe jetzt bestimmt mir schon zich Codes angeschaut und auch bestimmt einige erklärungen... nur ich raff es einfach nicht.

    Wie ich an ein Handy per UART die Daten für das SMSC & Empfänger einstelle habe ich bereits hinbekommen. 8bit Zeichen -> 4bit BCD gepackt und dann als Hex an das Handy ok. Aber wie wandel ich jetzt ein Zeichen meinetwegen 'H' was ja als 1 byte mit 8 bit vorliegt in 7bit ?!

    Gruß Dennis

    P.S.: Es geht von der sache her um folgendes: http://www.nobbi.com/sms_pdu.htm

  2. #2
    Gast
    Hat denn hier noch keiner so etwas gemacht?

    Gruß Dennis

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    09.07.2004
    Beiträge
    5

    8 zu 7 Bit. Auszug aus Sourcen

    Hi,
    ich hoffe das hilft Dir weiter.
    Gruß
    Jürgen

    size_t UChar2Hex7String(
    const unsigned char *source,
    size_t sourceLen,
    char *dest
    )
    {
    dest[0] = '\0';
    char *p = dest;

    for (size_t i = 0; i < sourceLen; i += 8 )
    {
    unsigned char tmpbuffer[10];
    memset(tmpbuffer, 0, sizeof tmpbuffer);
    unsigned char mask = 0;
    for (size_t j = 0; j < 8 && i + j < sourceLen; j++)
    {
    unsigned char ch = source[i + j];
    ch >>= j;
    tmpbuffer[j] = ch;
    if (j > 0)
    {
    ch = source[i + j];
    ch &= mask;
    ch <<= 8 - j;
    tmpbuffer[j - 1] |= ch;
    }
    mask = (mask << 1) | 1;
    }
    for (j = 0; j < 7 && i + j < sourceLen; j++)
    {
    sprintf(p,"%02x", tmpbuffer[j]);
    p += 2;
    }
    }
    return p - dest;
    }

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.01.2004
    Ort
    Erlangen, Bayern
    Alter
    42
    Beiträge
    253
    Hi Jürgen...habs mal neu strukturiert ist wohl beim Einfügen verlorengegangen
    Code:
    size_t UChar2Hex7String( const unsigned char *source, size_t sourceLen, char *dest) { 
    	dest[0] = '\0'; 
    	char *p = dest; 
    
    	for (size_t i = 0; i < sourceLen; i += 8 ) { 
    		unsigned char tmpbuffer[10]; 
    		memset(tmpbuffer, 0, sizeof tmpbuffer); 
    		unsigned char mask = 0; 
    		for (size_t j = 0; j < 8 && i + j < sourceLen; j++) { 
    			unsigned char ch = source[i + j]; 
    			ch >>= j; 
    			tmpbuffer[j] = ch; 
    			if (j > 0) { 
    				ch = source[i + j]; 
    				ch &= mask; 
    				ch <<= 8 - j; 
    				tmpbuffer[j - 1] |= ch; 
    			} 
    			mask = (mask << 1) | 1; 
    		} 
    		for (j = 0; j < 7 && i + j < sourceLen; j++) { 
    			sprintf(p,"%02x", tmpbuffer[j]); 
    			p += 2; 
    		} 
    	} 
    	return(p - dest); 
    }
    Hier gibt es zu der Umwandlung ein Beispiel:
    http://www.dreamfabric.com/sms/hello.html

    habe mich gerade man ein bisschen in das Thema eingearbeitet...
    Message: Testtext

    Code:
    Ascii  Hex  Bin
    T      54   01010100
    e      65   01100101
    s      73   01110011
    t      74   01110100
    t      74   01110100
    usw..
    Man beachte, dass sich die verwendeten Asciizeichen alle in einem Raum befinden, der eine führende Null hat. Diese lässt man genauso wie in der Dezimalrechnung einfach weg.
    Code:
    Ascii  Hex  Bin
    T      54   1010100
    e      65   1100101
    s      73   1110011
    t      74   1110100
    t      74   1110100
    usw..
    Jetzt spiegeln wir die einzelnen Bytes.
    Code:
    Ascii  Hex  GespiegeltBin
    T      54   0010101
    e      65   1010011
    s      73   1100111
    t      74   0010111
    t      74   0010111
    usw..
    hängen es hintereinander und gruppieren byteweise neu.
    Code:
    00101011.01001111.00111001.01110010.111...
    Die neu gruppierten Bytes werden nun wieder gespiegelt und stehen uns in alt bekannter Schreibweise zur verfügung.
    Code:
    GespiegeltBin Hex
    11010100       D4
    11110010       F2
    10011100       9C
    01001110       4E
    Als Beispieltext habe ich mal den von Nobbi hergenommen. (http://www.nobbi.com/sms_pdu.htm)


    Gruss
    Michael


    Jetzt hats doch glatt bei mir die Formatierung auch verrissen?!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress