array

Post Reply
Message
Author
Guest

array

#1 Post by Guest »

Hi, ich verstehe grundsetzlich folgenden code nicht:

array[1] = (addr & 0x000000ff);
array[2] = ((addr & 0x0000ff00) >> 8);
array[3] = ((addr & 0x00ff0000) >> 16);
array[4] = ((addr & 0xff000000) >> 24);

Was hat man davon, wenn man eine Zahl oder eine adresse mit einer adresse verknuepft und dann durch 2^8 , 2^16 bzw 2^24 dividiert ?

Ich habe dieses stueck code bereits in vielen sources gefunden.
Vielleicht kann mir ja einer weiterhelfen

Guest

#2 Post by Guest »

an den paar code zeilen kann mann nicht feststellen wofür das sein soll. das kommt auf die absichten des programmierers an. solche bitmanipulationen in arrays werden häufig für kryptographie verwendet aber ob das hier der fall ist kann mann nun wirklich nicht wissen.

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#3 Post by jochen »

addr wird ein 4-Byte-Integer (Typ int oder long) sein. Der Programmierer möchte nun auf die Werte der 4 Bytes einzeln zugreifen können. Mittels &-Operator (bitweises UND) maskiert er alle Bits aus, die nicht zum jeweiligen Byte gehören. Jetzt muss er nur noch die Bits rechts-shiften, (>>), damit er auch nur Werte erhält, die in ein einzelnes Byte hineinpassen. Diese weist er dann den Array-Elementen zu., die wohl jeweils ein Byte gross sind (möglicherweise als char array[4] definiert).

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Post Reply