Forum: Compiler & IDEs Hex to ASCII


von Kleiner Programmierer (Gast)


Lesenswert?

Hallo,
habe mein gutes C-Buch grade nicht dabei.
Ich suche eine Funktion die analog zu ultoa eine unsigned Long int in 
einen ASCII-String verwandelt.
Also
1
unsigned long int Zahl = 1000; // 1000 dez = 0x03E8
2
char my_string[10];
3
hextoa(Zahl,my_string,10);
soll dann als Ausgabe in my_string 0x000003E8 ergeben.

von klaus (Gast)


Lesenswert?

sprintf()

...wenn's nicht gerade für uC sein soll

von Kleiner Programmierer (Gast)


Lesenswert?

klaus schrieb:
> sprintf()
>
> ...wenn's nicht gerade für uC sein soll

Tja, leider für einen ATtiny µC

von Helfer (Gast)


Lesenswert?

> Ich suche eine Funktion die analog zu ultoa eine unsigned Long int in
> einen ASCII-String verwandelt.

ultoa macht doch genau das. Warum brauchst du dann eine "zu ultoa 
analoge Funktion"? Nimm doch einfach ultoa!

von ... (Gast)


Lesenswert?

Und was gefällt Dir an ultoa nicht? Daß Du da '0x' und die führenden 
Nullen selber davorbasteln mußt?

von Warmduscher (Gast)


Lesenswert?

Helfer schrieb:
> Nimm doch einfach ultoa!

ultoa würde als string "1000" liefern.

Ich will aber in dem string "0x000003E8" haben.

von Helmut L. (helmi1)


Lesenswert?

Warmduscher schrieb:
> ultoa würde als string "1000" liefern.
>
> Ich will aber in dem string "0x000003E8" haben.

Dann must du dir so eine Funktion basteln. Kann doch nicht so schwer 
sein.

von ... (Gast)


Lesenswert?

Dann lies dir die Doku zu ultoa nochmal durch!
Was meinst Du wohl, wozu der dritte Parameter da ist.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Warmduscher schrieb:
> ultoa würde als string "1000" liefern.

Nö, muss es nicht. Welche Funktion hat denn Deiner Ansicht nach der 
dritte Parameter von ultoa?

von ... (Gast)


Lesenswert?

Helmut Lenzen schrieb:
> Dann must du dir so eine Funktion basteln. Kann doch nicht so schwer
> sein.

Das wär ja dann doch zuuu einfach :)

von Andreas B. (Gast)


Lesenswert?

Hexadezimal (und Oktal) sind ja deshalb so verbreitet, weil deren Basis 
eine Potenz von 2 ist. Bei Hexadezimal entspricht dann jeder Ziffer 
genau 4 Bit. In einer Schleife immer jeweils 4 Bit unabhängig 
voneinander verarbeiten ist dann doch trivial.

von Helmut L. (helmi1)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Nö, muss es nicht. Welche Funktion hat denn Deiner Ansicht nach der
> dritte Parameter von ultoa?

Ich kenne den nur als Radix. Bei 2 macht er einen Binaerstring , bei 10 
einen Dezimal und bei 16 einen Hexstring.

von ... (Gast)


Lesenswert?

Und was ist Deiner Meinung nach "0x000003E8" ????

von Karl H. (kbuchegg)


Lesenswert?

Helmut Lenzen schrieb:
> Rufus Τ. Firefly schrieb:
>> Nö, muss es nicht. Welche Funktion hat denn Deiner Ansicht nach der
>> dritte Parameter von ultoa?
>
> Ich kenne den nur als Radix. Bei 2 macht er einen Binaerstring , bei 10
> einen Dezimal und bei 16 einen Hexstring.
                                 *********

Und was wollte der TO noch mal?

von Kleiner Programmierer (Gast)


Lesenswert?

Sorry Leute

aber mein gutes C-Buch ist verschollen.
In meinem Programm stand:
1
  ultoa(Zahl,string1,10);
Ich hatte den dritten Parameter mit der Stringlänge asoziert...
Jetzt klappts, danke.

Warum bekomme ich bei
1
LCD_Zeichen(toupper(my_string[i]));
die Warnung:"implicit declaration of function 'toupper'" ?

(Besser neuen Thread?)

von Karl H. (kbuchegg)


Lesenswert?

Kleiner Programmierer schrieb:

> Warum bekomme ich bei
>
1
> LCD_Zeichen(toupper(my_string[i]));
2
>
> die Warnung:"implicit declaration of function 'toupper'" ?
>
> (Besser neuen Thread?)

Zweite Frage: Ja, wäre besser

Erste Frage: Weil du nicht den entsprechenden Header inkludiert hast, 
der den Compiler mit der mitgelieferten Funktion "toupper" bekannt 
macht.

von Helmut L. (helmi1)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Helmut Lenzen schrieb:
>> Rufus Τ. Firefly schrieb:
>>> Nö, muss es nicht. Welche Funktion hat denn Deiner Ansicht nach der
>>> dritte Parameter von ultoa?
>>
>> Ich kenne den nur als Radix. Bei 2 macht er einen Binaerstring , bei 10
>> einen Dezimal und bei 16 einen Hexstring.
>                                  *********
>
> Und was wollte der TO noch mal?

Der TO schrieb 10. Und wollte einen Hexstring im Format "0x000003e8" und 
dachte mit der 10 wuerde er eine laenge von 10 erhalten.
ultoa liefert aber keine fuehrenden Nullen und kein 0x davor.

von Karl H. (kbuchegg)


Lesenswert?

Helmut Lenzen schrieb:

> ultoa liefert aber keine fuehrenden Nullen und kein 0x davor.

0x ist kein Argument :-)
führende 0-en sind allerdings ein Argument.

Aber dieses Argument wurde ja erst jetzt nachgereicht :-)

von ... (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Helmut Lenzen schrieb:
>
>> ultoa liefert aber keine fuehrenden Nullen und kein 0x davor.
>
> 0x ist kein Argument :-)
> führende 0-en sind allerdings ein Argument.
>
> Aber dieses Argument wurde ja erst jetzt nachgereicht :-)

Nö: Beitrag "Re: Hex to ASCII" :)

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.