Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » adresse nach string convertieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
28.01.2003, 20:06 Uhr
MarcDuerner



Hi,
Gibt es eine einfache funktion die mir eine addresse wie z.B.:

#define MYADDRESS 0x0600

in einen c-string umwandelt ( also hier: "0x0600")

Gruß,
Marc
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.01.2003, 21:18 Uhr
~0xdeadbeef
Gast


Jepp, nennt sich sprintf. In diesem Fall würdest du sie so aufrufen:

C++:
char str[10];
sprintf(str, "%#x", 0x0600);

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.01.2003, 21:27 Uhr
MarcDuerner



Hm, geht das auch ungekehrt? Ich habe nen string:

char* num = "0600";

und will dann mit

#define MYADDRESS 0x0600

vergleichen ob identisch.

Marc
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.01.2003, 08:09 Uhr
virtual
Sexiest Bit alive
(Operator)



C++:
char str[] = "0x600";
unsigned a;
sscanf(str, "0x%x", &a);


Wenn mit führenden Nullen, dann auch:

C++:
sscanf(str, "0x%04x", &a);


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 29.01.2003 um 08:10 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.01.2003, 15:49 Uhr
~0xdeadbeef
Gast


Schöner (kürzer):

C++:
sscanf(str, "%#04x", &a);

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.01.2003, 16:12 Uhr
virtual
Sexiest Bit alive
(Operator)


Hm:

C++:
22 $ cat a.c
#include <stdio.h>

int main()
{
        char buffer[] = "0x0600";
        unsigned i;

        sscanf(buffer, "%#04x", &i);
        printf("deadbeef: 0x%04x\n", i);

        sscanf(buffer, "0x%04x", &i);
        printf("virtual: 0x%04x\n", i);

}
23 $ gcc a.c
24 $ a.out  
deadbeef: 0x40136ad8
virtual: 0x0600


... dieses Ergebnis läßt mich vermuten, daß schön!=richtig.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.01.2003, 16:40 Uhr
MarcDuerner



Lustigerweise habe ich gerade festgestellt das folgendes geht:


Code:
#define ADDRESS 0x0600

// get_address gibt mir eine hadware addresse
// allerdings nur 0600 ohne 0x

unsigned int ui_address = get_address();

if( ui_address == ADDRESS)
  {cout << "Identical address" << endl;}



wieso geht der vergleich denn trotzdem, auch wenn bei ui_address das
0x fehlt?

Marc
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.01.2003, 16:41 Uhr
~0xdeadbeef
Gast


Hast recht, kein Wunder. Ich hab die zwei zusätzlichen Zeichen vergessen, und beim scannen ist das # was anderes als beim schreiben. Also so:

C++:
#include <stdio.h>

int main()
{
        char buffer[] = "0x0600";
        unsigned i;

        sscanf(buffer, "%06x", &i);
        printf("deadbeef: %#06x\n", i);

        sscanf(buffer, "0x%04x", &i);
        printf("virtual: 0x%04x\n", i);

}


gehts.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.01.2003, 16:44 Uhr
~0xdeadbeef
Gast


Das eben war noch für virtual. @Marc: Natürlich geht das so - den Computer interessiert ja nachher nur noch der Wert, nicht, wie du ihn geschrieben hast. Du könntest genausogut

C++:
#define ADDRESS 1536


nehmen, weil 0x0600 == 1536.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
29.01.2003, 16:48 Uhr
MarcDuerner



Was ist denn 0x0600 für ein Format?
Und wieso muss man es nicht in ein unsigned int umwandeln?

Danke!
Marc
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: