Avatar billede dsj Nybegynder
20. juli 2002 - 20:38 Der er 7 kommentarer og
1 løsning

konvertering fra byte til 16-bit int

Hejsa

Fra en server modtager jeg et langt byte[] fyldt med ip-adresser.

De 4 første bytes er de fire cifre i ip-adressen, de 2 næste bytes er portnummeret som en 16-bits int.

Hvordan får jeg omskrevet/konverteret disse to bytes til mit portnummer?

Hvis to bytes f.eks. er  svar[4]=105, svar[5]=-121 -hvad er portnummeret så??
Avatar billede doozerii Nybegynder
20. juli 2002 - 20:47 #1
du får altså et array af bytes, hvor de første 4 er ip'en som unsigned bytes, og de sidste to er portnummeret som (signed eller unsigned) word ?
Anyway, du kan typecaste dig ud af problemet, om end der sikkert er en listigere måde. dine svar[4] og svar[5] er ikke unsigned med signed (ud fra det ovenstående) eftersom det returnerer en negativ værdi. - må vi ikke få lidt mere kode at se ? Så vidt jeg kan se, er det bare et spørgsmål om at trylle lidt med signed/unsigned og så få de sidste to bytes ud som et word. (det kan du gøre ved at sige port=svar[5]*255+svar[6] (med mindre de er reversed, så skal du bare bytte om på dem.)
Mvh
Kristoffer
Avatar billede jakoba Nybegynder
20. juli 2002 - 20:47 #2
int ipval0 = (int)svar[0] & 255;
int ipval1 = (int)svar[1] & 255;
int ipval2 = (int)svar[2] & 255;
int ipval3 = (int)svar[3] & 255;
int portnr = ( ((int)svar[4] & 255) *256) +((int)svar[5] & 255);

mvh JakobA
Avatar billede jakoba Nybegynder
20. juli 2002 - 20:50 #3
? er det muligt at have negative portnumre ?
Avatar billede nico26 Nybegynder
20. juli 2002 - 20:50 #4
int port = (svar[4] << 8) + svar[5];
Avatar billede doozerii Nybegynder
20. juli 2002 - 20:52 #5
nope, tcp/ip protokollen har portnumre fra 1 til 65535
Avatar billede dsj Nybegynder
20. juli 2002 - 21:02 #6
nico22 - opret lige et svar, du var rigtigt på den :)
Avatar billede dsj Nybegynder
20. juli 2002 - 21:03 #7
PS. Negative tal konverteres til byte-værdi ved:  256 + (-x)
Avatar billede nico26 Nybegynder
20. juli 2002 - 21:06 #8
et svar
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