3 Bytes aus Integer

30/04/2009 - 21:39 von Tim Ritberg | Report spam
Hi again! Ja ich wieder...

Also ich möchte 3 Bytes aus einem Integer in ein 3 byte grosses array of
Byte kopieren, ja ich brauch eine Variable mit 3 Byte.
Das ganze soll dann little Endian sein, ich denk das geht mit swap.
 

Lesen sie die antworten

#1 Sieghard Schicktanz
01/05/2009 - 01:17 | Warnen spam
Hallo Tim,

Du schriebst am Thu, 30 Apr 2009 21:39:26 +0200:

Also ich möchte 3 Bytes aus einem Integer in ein 3 byte grosses array of
Byte kopieren, ja ich brauch eine Variable mit 3 Byte.



Wieso kopieren? Aber gut...

TYPE
Trilobyte: ARRAY [1..3] OFbyte;
TriloBastard = RECORD
CASE boolean OF
false: (Nummer: integer);
true: (TriByte: Trilobyte);
END;
VAR
Bastardiseur: TriloBastard;
Urviech: Trilobyte;

Damit:
{ integer eintragen: } Bastardiseur.Nummer:= 12345;
{ 3-Byte-Array lesen: } Urviech:= Bastardiseur.TriByte;

Das ganze soll dann little Endian sein, ich denk das geht mit swap.



Wenn Du einen passenden swap hast - mit dem vom FPC nicht, der nimmt nur
Typen mit geradzahliger Bytezahl, und dann tauscht er nur die Hàlften aus.
Du willst aber die beiden "àußeren" Bytes Deines Urviechs austauschen, das
mittlere bleibt stehen. Also mußt Du das besser zu Fuß machen, z.B. so:

Urviech [1]:= Urviech [1] XOR Urviech [3];
Urviech [3]:= Urviech [1] XOR Urviech [3];
Urviech [1]:= Urviech [1] XOR Urviech [3];

Wenn Du den Mechanismus hinter der Vertauschung verstanden hast, dann
darfst Du die Konstruktion auch benutzen. Ansonsten brauchst Du halt eine
Hilfsvariable...

(Weitergabe von Adressdaten, Telefonnummern u.à. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder àhnlichem)
Mit freundlichen Grüßen, S. Schicktanz

Ähnliche fragen