Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Bytes vergleichen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
12.04.2007, 14:23 Uhr
LowFly



Hallo,
weis jetzt nicht ob ich hier richtig bin.

ich suche nach einer möglichkeit eine Array von Bytes mit einer anderen ByteArray zu vergleichen.

ich will prüfen ob in einer Array aus Bytes eine bestimmte Byte reihenfolge forhanden ist.

ähnlich der funktion StrCSpnI bzw der CString::Find funktion.

kann mir da jemand weiterhelfen

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.04.2007, 15:03 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


memcmp?
vergleicht nicht strings sondern "raw"-speicherbereiche
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.04.2007, 15:28 Uhr
LowFly



aber memcmp prüft doch nur ob zwei gleich große ByteArrays, gleich größer o. kleiner sind.

Ich such ne möglichkeit, aus einer datei die in Bytes eingelesen wird, vorab zu prüfen ob das gesuchtes zb ein Namen (marcus) vorhanden ist. Bevor ich dann genauer such an welcher adresse das gesuchte steht. Steht das gesuchte dann nicht in der datei, kann ich sie ja gleich wieder verwerfen.

versteif dich aber bitte nicht nur auf text.

Dieser Post wurde am 12.04.2007 um 15:28 Uhr von LowFly editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.04.2007, 15:55 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


strstr()
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.04.2007, 17:55 Uhr
LowFly



hab jetzt nach längerem googlen und eurer inspiration nen code gefunden den ich für mich umgeschrieben hab. funst super

ist kurz & knackig und super schnell


C++:
BYTE *FindByte(BYTE *byDestination, DWORD dl, BYTE *bySource, DWORD sl)
{    /**********************************************************************************************
                                        FIND BYTE
                Sucht in der Übergebenen Ziel Array nach einer Bezugs Array

            - byDestination Zeil Array in der gesucht wird
            - dl länge/größe der Zeil Array
            - bySource Bezugs Array die gesucht wird
            - sl länge/größe der Bezugs Array

    **********************************************************************************************/


    BYTE *p;

    for (p = byDestination; p <= (byDestination-sl+dl); p++)
    {
        if (memcmp(p, bySource, sl) == 0)
            return p; /* gefunden */
    }

    return NULL;
}



danke nochmal an euch für eure hilfe & inspiration

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.04.2007, 19:44 Uhr
0xdeadbeef
Gott
(Operator)


Ich bin da trotzdem mit Guybrush einer Meinung,

C++:
#include <string.h>

// ...

char const *pos = strstr("Heuhaufen mit einer Nadel drin", "Nadel");


wär irgendwie einfacher.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 12.04.2007 um 19:45 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.04.2007, 20:21 Uhr
LowFly



naja,
ich lade aber die datei in den arbeitsspeicher,
und lese von dort die Bytes aus.

immer noch einfacher strstr zu verwenden?

warscheinlich nicht denn mit strstr passiert dort ein ungewollter fehler, nämlich das strstr auch dann anspricht wenn es nullen findet
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.04.2007, 16:09 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Deinen letzten Post solltest du nochmal deutlicher formulieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.04.2007, 16:44 Uhr
0xdeadbeef
Gott
(Operator)


In dem Fall,

C++:
void *pos = memmem(heuhaufen, heuhaufen_laenge, nadel, nadel_laenge);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.04.2007, 17:34 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


memmem? das gibts nur für _GNU_SOURCE (ansonsten - nette manpage dazu, der Satz "this is a dangerous function to use" und "This function is a GNU extension" sagt doch schon viel aus ;-) )
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: