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.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
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.