![]() |
ClientSocket: 4bytes lesen und kombinieren
hoi,
Wenn ich ein Socket "auslese" 1-byte zurzeit, die ersten 4bytes sind eine zahl die die länge des rests angeben. wie kombiniere ic diese 4bytes zu einen integer? |
Re: ClientSocket: 4bytes lesen und kombinieren
Delphi-Quellcode:
abhänig davon ob der Integer in Big Endian oder Little Endian gesendet wurde.
// Entweder
var A,B,C,D: Byte; I: Cardinal; begin I := A shl 24 + B shl 16 + C shl 8 + D; // oder I := D shl 24 + C shl 16 + B shl 8 + A; end; Gruß Hagen |
Re: ClientSocket: 4bytes lesen und kombinieren
:wiejetzt: Ein Integer ist 4 Bytes groß.
Wie genau bekommst du die Daten geliefert? |
Re: ClientSocket: 4bytes lesen und kombinieren
danke :}
|
Re: ClientSocket: 4bytes lesen und kombinieren
Moin Pseudemys Nelsoni,
Du könntest das auch mit Varianten Records lösen:
Delphi-Quellcode:
so könntest Du die Werte direkt in MyVar.A bis MyVar.D oder in einer Schleife in MyVar.AR[1] bis MyVar.AR[4] einlesen und könntest dann direkt, ohne weiter etwas umrechnen zu müssen (spart Rechenzeit) den Wert in I benutzen.
type
TMyVarRec = packed record case byte of 0 : (A:Byte; B:Byte; C:Byte; D:Byte;); 1 : (AR : array [1..4] of Byte); 2 : (I:Cardinal); end; var MyVar : TMyVarRec; Ggf. die Reihenfolge beachten, wie Hagen ja schon geschrieben hatte. |
Re: ClientSocket: 4bytes lesen und kombinieren
danke für den code, werde es benutzen :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz