mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bit-Rechnen


Autor: Steffen Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich hab da ein Probleme, bei dem Ihr mir hoffentlich auf die Sprünge 
helft...

Ich muss aus einem String (char[30]) die Zeichen zuersteinmal in 8-Bit 
umwandeln, dass ich also anstatt Buchstaben Hexzahlen im String stehen 
hab. Und dann muss ich die ganzen Dinger auch noch in 7-Bit verpacken 
und aneinander-reihen (in 8-bit)
Na ja, toll erklärt war das nicht ;-)

Wer den Zweck wissen möchte oder nicht alles verstanden ht, kann ja mal 
versuchen, den SMS-Versand per PDU zu verstehen...

Danke schon mal!
Steffen

Autor: Ingo B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

erinnert ein wenig an IntelHex.
In C kannst du mit atoi ein Zeichen in den Ascii-Wert umwandeln. Den 
DezWert musst du dann nur noch nach Hex wandeln - sollte doch eigentlich 
nicht so schwer sein.
Schau dir doch mal einen Quellcode von einem IntelHex (oder 
MotorolaHex)-Konverter an (google)....

Bis dann,
Ingo.

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nee, is net ganz ihex. eher gar nicht... :-)

allerdings machts auch grad nicht sehr viel sinn:

du willst einen buchstaben in hex umwandeln? also quasi, dass er durch 2 
zeichen (00 - FF) dargestellt wird? oder einfach nur, dass du zu dem 
buchstaben den ascii code hast?

Autor: Steffen Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, ich brauche von den Buchstaben den Ascii-Code.
Wie wandle ich die am besten um ???

Steffen

Autor: Kai_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So würde ich das machen:

void char2hex(unsigned char in, unsigned char* out)
{
   unsigned char b1 = in&0x0F;
   unsigned char b2 = in>>4;
   out[0] = nibble2hex(b1);
   out[1] = nibble2hex(b2);
}

unsigned char nibble2hex(unsigned char b)
{
   return (b<=9)?(b+'0'):(b+'a');
}

ohne Garantie, da nicht getestet...

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hä???

die buchstaben sind doch schon im asci code gespeichert? das macht doch 
keinen sinn...

unsigned char x = 'a';
printf("buchstabe %c ist 0x%x in asci",x,x);

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Steffen,

schau dir halt einfach mal den Quellcode eines Programms an das PDU 
verwendet, z.B. http://www.styx.demon.co.uk/smslink/ -> 
smslink-0.48b-2.tar.gz -> pdu.c

Autor: Steffen Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klasse, danke für den Tip (Link) !
Steffen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.