IP <-> DWORD
-
Hallo Leute!
Da ich nicht so gut mit dem Umrechnen von bytes umgehen kann, möchte ich euch eine FRAGE stellen:
eine IP ist so aufgebaut: 000.000.000.000
Das bedeutet, da sind vier bytes: BYTE.BYTE.BYTE.BYTE === 1 DWORD
Nun möchte ich folgendes:
BYTE b1, b2, b3, b4;
DWORD dw;Die bytes der IP in das DWORD aneinanderreihen und wieder vom DWORD umgekehrt 9n die BYTES.
Bitte helft mir, ich weiß wirklich nicht, wie ich sowas mit den üblichen Operatoren realisieren soll.

Ich habe dieses Unterforum aufgrund der WinAPI-Typen BYTE und DWORD genommen!
Danke.
-
union IP { DWORD asDword; unsigned char asBytes[4]; }; int main() { DWORD myIP = 0x32452362; IP ip; ip.asDword = myIP; printf("ip: %d.%d.%d.%d \n", (int)ip.asBytes[3],(int)ip.asBytes[2],(int)ip.asBytes[1],(int)ip.asBytes[0]); }Oder so ähnlich könnte man es mit unions lösen
-
Das muss so aussehen:
typedef union _IPADDR { struct { BYTE d, c, b, a; }; DWORD num; } IPADDR; typedef IPADDR *PIPADDR;Die buchstaben reihenfolge d, c, b, a muss so sein, denn wenn du die num incrementierst, damit rechnest, soll ja die hintere gruppe zuerst verändert werden... das funktioniert!!!!
-
Unions sind zum Speicher sparen und nicht als Konverter gedacht.
-
union-missbrauch schrieb:
Unions sind zum Speicher sparen und nicht als Konverter gedacht.
quatsch keinen mµll

-
ascda schrieb:
union-missbrauch schrieb:
Unions sind zum Speicher sparen und nicht als Konverter gedacht.
quatsch keinen mµll

http://www.c-plusplus.net/forum/viewtopic-var-t-is-133200.html
-
es gibt kein reinterpret_cast in c. außerdem is das was völlig anderes. und ich lass mir doch von c++ nasen auch nix erzählen, hochsprachen prgorammierer verachte ich...
-
idiot

-
yo du
-
nö du
-
fu
-
bb