BufferedReader in = new BufferedReader(new InputStreamReader(link.getInputStream())); PrintWriter out = new PrintWriter(link.getOutputStream(), true);
så vil jeg gerne læse ind fra in, og det gør jeg således:
int temp; temp = in.read(); <- her opstår mit problem!
Sagen er den, at jeg (i en do-while) modtager 1 byte ad gangen. det er bare ikke skidefedt, når byten (i dec.) bliver over 127 - for så får jeg en unicode-etellerandet-stads som et tal på 8000+ i stedet som jeg (vidst nok) ikke kan omregne tilbage igen.
eksempelvis modtager jeg på et tidspunkt 139, som jo som bekendt er større end 127! - og så går det galt - så får jeg 8249 i stedet.
Jeg er overbevist om, at der er mange derude, der har haft en lignende oplevelse, og (forhåbentlig!) har en løsning til dette.
typen byte er signed, så når en byte castes til en int bliver det et negativet tal hvis den byte har øverste bit sat.
fx: byte 128 = 10000000 bliver til int 11111111111111111111111110000000
men i denne situation ønsker vi at få den unsigned. det kan gøres med:
byte var1 = 128; int var2 = 0x000000ff & (int)var1;
så ender vi med en int der indeholder 00000000000000000000000010000000 sådan som vi ønsker.
Synes godt om
Ny brugerNybegynder
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.