C++ bytes omkeren??

  • Onderwerp starter Onderwerp starter Dsmn
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Dsmn

Nieuwe gebruiker
Lid geworden
19 okt 2006
Berichten
1
Hallo ik heb een probleem waar ik niet uitkom, en ik weet niet echt waar ik naar moet zoeken.

ik werk tussen een client en een server, de server stuurd zijn versie nummer
het packet is als volgt:

0x01 0x86

wat moet staan voor het nummer 390
alleen hoe krijg ik dit nu in een 'int'?

ik begrijp dat het "geheugen" anders om werkt?
als ik het doe met memcpy, komt het verkeerd om
want als ik het goed begrijp word 390 in het geheugen opgeslagen als 0x86 0x01.

hoe kan ik dit oplossen?
 
hoe wordt zo'n packet door jou opgevangen? (ik heb geen idee hoe netcommunicatie in C/C++ verloopt).

Als je dat packet bvb via een stringstream in een string opslaat kan je mss gwn met stringfuncties zoeken op de woorden om je macht van 2 te bepalen en je getal samen te stellen.

Conceptcode:
Code:
int resultaat = 0;
stringstream ss;
ss << <jouw_opgevangen_packet>;
string s, subs;
ss >> s;
int start, end, macht8 = 0;
end = s.length();
start = s.rfind('x');
while (start != -1) //er staat nog een hex-getal
{
   int temp;
   ss.str(""); //stringstream clearen
   ss << s[start + 1];
   ss >> temp;
   resultaat += temp * 16 * pow(2, (8 * macht8)); //#include <cmath>
   ss.str("");
   ss << s[start + 2];
   ss >> temp;
   resultaat += temp * pow(2, (8 * macht8));
   end = start - 1;
   start = s.rfind('x', end);
}

--Johan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan