[Rahmenbedingungen]
Du hast am Anfang drei int-Werte, die Du sinnvollerweise in einem Array
speicherst (hab ich mal i_array gennant, weil mir nix besseres
eingefallen ist). Daraus sollen drei mal zwei char-Werte (jeweils High-
und Low-Byte) werden, die dann in irgendeinen nicht näher spezifizierten
(vermutlich externen) Byte-organisierten Speicher geschrieben werden
sollen.
[/Rahmenbedingungen]
Für die zu erzeugenden char-Werte wird ebenfalls ein Array angelegt
(zweidimensional, sind ja zu jedem Index zwei Werte zu speichern), das
ich mal c_array genannt habe. Die erste for-Schleife fängt beim int mit
dem Index 0 an, speichert das Low-Byte (wird bei der Typkonversion
automatisch extrahiert) im char c_array[0][0]. Dann wird das High-Byte
(um 8 Stellen nach rechts, also auf die Position des Low-Bytes
verschoben) in c_array[0][1] gesichert. Das ganze drei mal, dann sind
die Integer umgewandelt. Das char-Array kann man jetzt in den externen
Speicher schieben.
Der umgekehrte Fall: Die char-Werte werden (in der richtigen
Reihenfolge) aus dem externen Speicher geholt und im c_array abgelegt.
Dann werden mit einer Schiebe-Operation und einem bitweisen ODER (man
kann an der Stelle auch ein '+' schreiben, aber mir ist es so lieber,
weil man besser sieht, was da passiert) die int-Werte wieder
zusammengepuzzelt. Wichtig ist die Reihenfolge der Typkonversionen
(erst den char nach int casten, dann schieben, sonst kommt Null raus).
Gleiches gilt natürlich oben in der ersten for-Schleife.