Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi Leutz, gibts es eigentlich auch einen Weg, direkt zu erfahren, wieviel platz in einem Array ausgenutzt sind? Oder läßt sich immer nur die reservierte Größe Abfragen?

Oder wenn ihr das nicht wisst, dann vielleicht das.

Wiedermal Hexadezimale Zahlen.

Also, ich bekomme über ein Socket eine Hexadezimale nachricht. Die erstem beiden Bytes sprechen für die Länge. im Speicher sieht das dann so aus:

39 02 00 00 01 02

39 02 sind in dem fall aber als 0239 HEX gemeint, also 569 byte. wie kann ich wie krieg ich denn das hin, dass er die beiden zahlen sp zusammenrechnet. Also mit diesem hier kann ich mir die Zahlen holen und in einem Char speichern.

 

memcpy(&cSizeByte1, &pBuf[0], 1);    /*Länge der Nachricht incl. LOGLIB-Header */

    memcpy(&cSizeByte2, &pBuf[1], 1);    /*Länge der Nachricht incl. LOGLIB-Header */ 

Nun brauch ich aber noch ne Umrechnung von Hex in Dez. hoffe ihr versteht mich. :(:D

Greetz

[ 11. Juli 2001: Beitrag editiert von: FaFo ]

Geschrieben

Hi !

Das mit der Arraygrösse versteh ich nicht ;-)

Wenn man nicht vorher das ganze Feld mit irgendeinem Identifizierer füllt, hat man glaub ich keine Möglichkeit die genutzte Grösse festzustellen.

Füll einfach das Feld mit irgendeinem Sonderzeichen und frag das Feld später einfach nach dem 1. gefunden Zeichen ab.

gruß gugel

Geschrieben

Die größe eines statischen Arrays kann man nicht abfragen. Deshalb arbeitet der Compiler ja z.B. mit dem DEBUG_NEW. Hier wird im Speicher davor und danach ein bestimmtes Bitmuster gesetzt. Ist dieses nach dem Programmablauf verletzt, so wird das erkannt und der Compiler gibt eine Fehlermeldung aus. Deshalb ist einer der gemeinsten Fehler in einem Programm ja wenn Array-Grenzen überschritten werden. Da kann man manchmal ganz schön lange suchen. Deshalb ist es sinnvoll sich eine Array-Funktion zu schreiben, die Bereichsüberschreitungen kontrolliert und abfängt.

Geschrieben

Methode 1 wäre es jedem Array-Eintrag zusätzlich ein belegt- oder Frei-Bit zu spendieren (Als Bitfelder z.B.) oder diese Bits komplett in eine zweites Array auszulagern. (Es ist natürlich dann schwierig die Änderungen in den 2 Arrays auszugleichen. Am einfachsten wäre es eine "unmögliche" Bit-Kombination festzulegen die einfach nicht im Array vorkommen darf. Dann ist es auch am einfachsten belegte Felder festzustellen.

Geschrieben

#define MAX=500

int array[MAX];

und schon hast du die größe verfügbar !

Und wieso willst du im programmcode die array-größe abfragen ... die hast du im quelltext doch selber bestimmt ;-)

Und falls du das alles mit new machst brauchst du dir doch die größe des array nur zu merken ;-)

Geschrieben

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von FaFo:

<STRONG>

Wiedermal Hexadezimale Zahlen.

Also, ich bekomme über ein Socket eine Hexadezimale nachricht. Die erstem beiden Bytes sprechen für die Länge. im Speicher sieht das dann so aus:

39 02 00 00 01 02

39 02 sind in dem fall aber als 0239 HEX gemeint, also 569 byte. wie kann ich wie krieg ich denn das hin, dass er die beiden zahlen sp zusammenrechnet. Also mit diesem hier kann ich mir die Zahlen holen und in einem Char speichern.

Nun brauch ich aber noch ne Umrechnung von Hex in Dez. hoffe ihr versteht mich. :(:D

[ 11. Juli 2001: Beitrag editiert von: FaFo ]</STRONG>

Geschrieben

Also ich hab´s auch nicht so ganz gerafft wie der´s meint. Zuerst dachte ich wegen lesen und Schreiben in Arrays, dann dachte ich den freien Speicher falls Felder belegt sind (unregelmäßig). Und jetzt blicke ich überhaupt nix mehr....

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...