Forum: Compiler & IDEs Umwandlung von zahl in ascii funktion verstehe nicht


von Dan H. (hd1762)



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?

von Max H. (hartl192)


Lesenswert?

!!Bildformate!! Die 13MPixel Fotos deines LG G2 musst du vor dem 
Hochladen komprimieren.

von Dussel (Gast)


Lesenswert?

Läuft irgendwo ein Wettbewerb, wer den bescheuertsten Anhang hochlädt? 
Ein echter "Screenshot" und dann noch mit 5MB für eine Information von 
ein paar hundert Byte.

von DirkB (Gast)


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'

von Dan H. (hd1762)


Lesenswert?

Ok, habe jetzt den anhang geaendert, koennt ihr es jetzt bitte 
erklaeren, aber bitte schrittweise

von Max H. (hartl192)


Lesenswert?

Wo liegt dein Problem, verstehst du alles nicht oder nur einen Teil?

von Dan H. (hd1762)


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

von Max H. (hartl192)


Lesenswert?

Das Bitweise und aus 0x0F und value.

von Dan H. (hd1762)


Lesenswert?

Max H,
Also ist klar, bitweise. Ich habe versucht es mir auszurechnen.
So wie ich es verstehe, habe ich zum beispiel fuer value 0110 0011 und 
fuer 0x0F habe ich dann 0000 1111, das heisst ich kriege kein lower 
nibble, wie kommt er da drauf

von DirkB (Gast)


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?

von DirkB (Gast)


Lesenswert?

0110 0011    0x63
0000 1111 &  0x0F
=========
0000 0011    0x03

von Dan H. (hd1762)


Lesenswert?

Ich habe jetzt den kompletten code als anhang reingefuegt

von DirkB (Gast)


Lesenswert?

Dan Hushaev schrieb:
> Ich habe jetzt den kompletten code als anhang reingefuegt

Das ist ja schon wieder ein Bild.

von Dan H. (hd1762)


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

von Dan H. (hd1762)


Lesenswert?

DirkB, ich habe es nur als bild

von DirkB (Gast)


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.

von DirkB (Gast)


Lesenswert?

Dan Hushaev schrieb:
> DirkB, ich habe es nur als bild

Du hast das nicht als Code zum ausprobieren vorliegen?
Wie willst du dann mit dem Code rumspielen und etwas lernen?

von Dan H. (hd1762)


Lesenswert?

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

Ich dachte er verschiebt um vier stellen von anfang, so dass ich dann 
0000 0011 habe, und von der mitte, dass ich danach 0000 0110

von Max H. (hartl192)


Lesenswert?

Er verschiebt es, speichert das Ergebnis der Verschiebung aber nicht in 
value, sondern in i.

von Dan H. (hd1762)


Lesenswert?

Ok, sorry, da hat mir wohl das grundwissen gefehlt, sorry fuer das 
verschwenden deiner zeit

von Dan H. (hd1762)


Lesenswert?

Ich habe habe das verschieben um vier stellen falsch verstanden. Wenn 
man >>4 angibt, dann fallen die letzten vier stellen raus, und dachte 
umgekehrt, dass es die ersten vier waeren

von Max H. (hartl192)


Lesenswert?

Also besser ein C-Buch...

von Amateur (Gast)


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.

von Amateur (Gast)


Lesenswert?

Amateur schrieb:
> Windoof
*Windows

von Amateur (Gast)


Lesenswert?

>Windoof = *Windows

Danke für den Hinweis, währe ich ohne Dich wohl nicht drauf gekommen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.