Avatar billede bjering Nybegynder
06. september 2004 - 04:07 Der er 4 kommentarer og
1 løsning

copy char ind i int16

har den her smule kode

void gameserver::newxy(char * newloc, DWORD ptr)
{
    CConnection* c = reinterpret_cast <CConnection*> (ptr);
    char            cip[15];
    unsigned int    cp = 0;
    c->PeerInfo (&cip[0], 15, &cp);

    PacketLog((unsigned char*)&newloc[0], strlen(newloc));

        // her og ned går den galt....
    int16 myx = (int16)(char *)&newloc;
    int16 myy = (int16)(char *)&newloc[sizeof(myx)];

    Log2File(TRUE, "New X/Y : %i / %i\n", myx, myy);

    updatexy(cp, myx, myy);
    return;
}

okay, den får en char*newloc der hedder:

[C3 7F] [68 80]

har markeret de 3 buffere jeg skal bruge:

int16 (omvendt, skal bruge den som 7F C3)
int16 (omvendt, skal bruge den som 80 68)

har prøvet noget med 10 forskellige metoder, includeret atoi, htons, og så videre osv, søgte lidt om det, men kunne ikke rigtig finde et svar nogen steder..

hvad gør jeg forkert ?

7FC3 = 32707, men jeg får en value i myx der hedder 63004 (o.o)

takker.
Avatar billede vpalme Nybegynder
06. september 2004 - 08:46 #1
prøv med

int16 myx = *((int16*)newloc);
Avatar billede arne_v Ekspert
06. september 2004 - 09:22 #2
jep

eller

int16 myx = ntohs(*((int16*)newloc));

hvis de skal swappes bytes.
Avatar billede bjering Nybegynder
06. september 2004 - 11:45 #3
int16 myx = *((int16*)&newloc[0]);
int16 myx = *((int16*)&newloc[sizeof(myx)]);

det funkede bare :)
Avatar billede bjering Nybegynder
06. september 2004 - 13:14 #4
vpalme's svar var den jeg brugte jo, så kun fair han får pointsne...
Avatar billede bjering Nybegynder
11. november 2005 - 13:42 #5
ingen svar :( lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester