Umwandlung von zahl in ascii funktion verstehe nicht

OP #3706798
Lesenswert?
• ▲
▼
Hallo allen, wie schon im betreff gesagt, ich verstehe diese Funktion 
nicht, oder eher gesagt, ich verstehe diese teilweise. Auf dem lcd soll 
dann dieser wert rauskommen: C0.
Kann mir bitte jemand erklaeren, wie dieser wert zu stande kommt. Weil 
vor der "C" mus es ja noch irgend ein wert geben, und wie es dann mit 
dem lower nibble funktioniert, ich kopiere es einfach nicht. Kann mir 
bitte jemand helfen?
Gast #3706833
Lesenswert?
• ▲
▼
Schau halt in einer ASCII-Tabelle nach. Auf Wikipedia findest du auch 
eine. Sogar mit Hex-Spalte.

Allerdings kann man in C auch gleich das Zeichen hin schreiben:
1
return digit + '0';
entsprechend für das 'A'
OP #3706885
Lesenswert?
• ▲
▼
DirkB, ich habe im ascii nachgeschaut, und was in int2ascii steht, 
verstehe ich auch. Aber schau, da ist ein achtstelliger code im value.
So danach verschiebe ich um vier stellen nach rechts und bekomme den 
oberen nibble.
Danach konvertiere ich in ascii und wird in index 0 reingeschrieben, 
aber beim ausgeben erscheint dieser nicht.
Das ist das eine.
Danach gehe ich weiter, und was passiert bei "i=value&0x0F" verstehe ich 
nicht
Gast #3706902
Lesenswert?
• ▲
▼
Dan Hushaev schrieb:
> Ok, habe jetzt den anhang geaendert

Dafür ist kein Anhang nötig. Die paar Zeilen kannst du auch hier rein 
kopieren und zwischen die c-Tags setzten, so wie es direkt über dem 
Edit-Feld unter Formatierung steht.

Dann könnte man deinen Code nehmen und kommentieren.

Wenn der Code länger ist, dann hänge ihn als Code an und nicht als Bild.



Bei i=value&0x0F ist & das binäre und und bei 0xf sind die untersten 4 
Bit alle auf 1 gesetzt.
Damit bekommst du nur die untersten 4 Bits aus value. Das Ergebnis wird 
nach i geschrieben.

Dan Hushaev schrieb:
> aber beim ausgeben erscheint dieser nicht.

Wie rufst du denn die Funktion auf. Ist im char-Array genug Platz?
OP #3706915
Lesenswert?
• ▲
▼
Ok DirkB, also ist der 0011 bei mir dann der lower nibble, und wie komme 
ich dann auf den upper nibble. Weil ich dachte, wenn ich um vier stellen 
nach rechts verschiebe, dann fallen die ersten vier ziffern raus, d.h., 
wenn ich 0110 0011 habe, faelt bei mir 0110 raus, und 0011 ist 
geblieben. Deshalb habe ich gedacht, dass die rechte haelfte des codes 
der upper nibble ist, und die linke seite des codes, der lower nibble
Gast #3706920
Lesenswert?
• ▲
▼
Das steht doch aber >> (rechts schieben)


0110 0011 mir 4 Stellen nach rechts kommt dann 0000 0110  und das ist 
dann  0x06

Du willst ja auch die linke Stelle zuerst haben.

value bleibt davon unberührt, da das Ergebnis in i abgespeichert wird.
Gast #3706974
Lesenswert?
• ▲
▼
@Dan

Schmeiß doch mal den Taschenrechner an.
Sowohl der von Windoof als auch der im Linux hat einen "Programmierer 
Modus".

Da kannst Du dir, im wahrsten Sinne des Wortes, ansehen was mit den 
einzelnen Werten passiert, wenn Du sie z. B. verschiebst.

Auch die Dezimalen, binären und sedezimalen Äquivalente kannst Du Dir 
jederzeit reinziehen.

Antwort schreiben

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