Hallo, Ich habe da mal eine Frage;-) Es handelt sich um ein 32bit System. Ein Integer belegt somit 4Byte. Annahme: Big Endian void Copy(unsigned int* pSource) { unsigned char bArray[4] = {1,2,3,4}; memcpy(pTarget, bArray, 4); } Wie sieht der Speicher danach aus ? So??? 0x01 0x02 0x03 0x04 oder so??? 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x03 0x00 0x00 0x00 0x04 Gruß, Hans
memcpy sind deine integer aber sowas von schnurzegal. memcpy kopiert Bytes, nicht mehr und nicht weniger.
hansmoleman schrieb: > Es handelt sich um ein 32bit System. Ein Integer belegt somit 4Byte. <erbsenzaehl> Die Schlussfolgerung ist nicht notwendigerweise richtig. Der C Standard sagt nur, dass ein 'int' mindestens 16bit breit ist. Wie groß er tatsächlich ist, hängt vom Compiler ab. </erbsenzaehl>
HAllo, Vielen Dank für die Hilfe. D.h. memcpy kopiert an die Zieladresse 4Bytes ! ==> *pTarget == 0x01020304 ??? @Frickler Danke für den Hinweis !
hansmoleman schrieb: > HAllo, > > Vielen Dank für die Hilfe. > D.h. memcpy kopiert an die Zieladresse 4Bytes ! Genau > > ==> *pTarget == 0x01020304 ??? Ob du das mit deinem 4 Byte integer, dann auch als 0x01020304 auslesen kannst, hängt davon ab, welche Endianess dein System hat.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.