aus zwei ascii ein uint8_t machen

Gast #283318
Lesenswert?
• ▲
▼
Das zwei da nicht reinpassen ist mir klar. Scheinbar hab ich mein
Problem nicht deutlich genug dargestellt. Ich versuch das Problem mal
an einem Beispiel klarer zu umreißen:

'2' und '3' als ASCII in 23 (dezimal) oder 0x17(hex) umwandeln.
Gast #283322
Lesenswert?
• ▲
▼
Wenn ich mir das im Disassembler anschaue, beinhaltet die Fkt:

int8_t a2toi (int8_t zahl1, int8_t zahl2)
{
   return ((zahl1-0x30)*10+(zahl2-0x30));
}

ca. 50 Assembleranweisungen. Da ich den µC stromsparend betreibe und
die Taktfrequenz niedrig halten möchte, bekomme ich durch die Codelänge
ein Timing-Problem. Habe gehofft, das es irgendwie schneller geht und
ich die Taktfrequenz nicht erhöhen muss.
Gast #283324
Lesenswert?
• ▲
▼
du kannst die multiplikation rausschmeissen, vielleicht wird es dadurch
besser. bei mikrocontrollern soll sowas ja manchmal wunder wirken:
--> x * 10 == (x<<3) + (x<<1);
d.h. aus
return (zahl1-0x30)*10+(zahl2-0x30);
könnteste sowas machen:
x = zahl1-0x30;
return (x<<3) + x + x + zahl2-0x30;
Gast #283326
Lesenswert?
• ▲
▼
> d.h. aus
> return (zahl1-0x30)*10+(zahl2-0x30);
> könnteste sowas machen:
> x = zahl1-0x30;
> return (x<<3) + x + x + zahl2-0x30;

Ich biete ein:

x = (zahl1 - '0') << 1;
return (x<<2) + x + zahl2 - '0';

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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.