/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Læse en byte over ascii 127
Fra : Janus


Dato : 12-07-01 16:09

Jeg kan sådanset godt læse en fil ind i et bytearray, ingen problemer dér...
sålænge værdien er karaktererne i filen ikke overskrider ascii værdien 127
!! Riiimeligt irriterende, for at bruge en pæn vending.
Hvordan får jeg min loader til at returnere et array, der indeholder værdier
op til ascii 256 ?

Vh Janus



 
 
Lars Dam (12-07-2001)
Kommentar
Fra : Lars Dam


Dato : 12-07-01 17:46

On Thu, 12 Jul 2001 17:09:05 +0200, "Janus"
<mailbox.spam@worldonline.dk> wrote:

>Jeg kan sådanset godt læse en fil ind i et bytearray, ingen problemer dér...
>sålænge værdien er karaktererne i filen ikke overskrider ascii værdien 127
>!! Riiimeligt irriterende, for at bruge en pæn vending.
>Hvordan får jeg min loader til at returnere et array, der indeholder værdier
>op til ascii 256 ?

Det gør du allerede... bytes er signed, så hvis du skal have den
justerede unsignede væri, skal du smide den i en short, eller int.

byte b = -12;
int i = b<0 ? b+128 : b;

Frit efter min svigtende hukommelse, såtest det lige selv først for en
sikkerheds skyld

>
>Vh Janus
>

vh. ld

Lars Dam (12-07-2001)
Kommentar
Fra : Lars Dam


Dato : 12-07-01 17:51

On Thu, 12 Jul 2001 18:46:24 +0200, Lars Dam
<larsdamXXspamXXprotectionXX@post2.tele.dk> wrote:

>
>Det gør du allerede... bytes er signed, så hvis du skal have den
>justerede unsignede væri, skal du smide den i en short, eller int.
>
>byte b = -12;
>int i = b<0 ? b+128 : b;
>
>Frit efter min svigtende hukommelse, såtest det lige selv først for en
>sikkerheds skyld

Sad lige og checkede dokumentationen.

det vil måske være nemmere for dig at konvertere dit byte array til en
streng:

byte[] ab = ....

String s = new String(ab);

og derfra bruge charAt() for at få værdien (char er en 16 unicode i.e.
unsigned), som du kan cast til int eller short efter behov.


vh. ld

Janus (15-07-2001)
Kommentar
Fra : Janus


Dato : 15-07-01 18:48

Takker mange gange.. sad lige og tænkte over det, mens jeg var på en lille
ferie, og kom frem til nogenlunde det samme som dit første svar.

Vh Janus

"Lars Dam" <larsdamXXspamXXprotectionXX@post2.tele.dk> wrote in message
news:i6lrkt8tncsngce6a1979t36bcj1lcr4bd@4ax.com...
> On Thu, 12 Jul 2001 18:46:24 +0200, Lars Dam
> <larsdamXXspamXXprotectionXX@post2.tele.dk> wrote:
>
> >
> >Det gør du allerede... bytes er signed, så hvis du skal have den
> >justerede unsignede væri, skal du smide den i en short, eller int.
> >
> >byte b = -12;
> >int i = b<0 ? b+128 : b;
> >
> >Frit efter min svigtende hukommelse, såtest det lige selv først for en
> >sikkerheds skyld
>
> Sad lige og checkede dokumentationen.
>
> det vil måske være nemmere for dig at konvertere dit byte array til en
> streng:
>
> byte[] ab = ....
>
> String s = new String(ab);
>
> og derfra bruge charAt() for at få værdien (char er en 16 unicode i.e.
> unsigned), som du kan cast til int eller short efter behov.
>
>
> vh. ld



Janus (15-07-2001)
Kommentar
Fra : Janus


Dato : 15-07-01 19:30

Ja, så melder der sig et andet problem.. jeg skal nogle gange bruge en
funktion der tager værdierne af mit ny int-array og konverterer det til
ascii karakterer. I ved, så 32 bliver et mellemrum og 33 til et udråbstegn.
Hvordan gør jeg så det ? Jeg fandt ikke noget i String, Character eller
Integer.

Vh Janus

"Janus" <mailbox.spam@worldonline.dk> wrote in message
news:9iskla$qrc$1@news.net.uni-c.dk...
> Takker mange gange.. sad lige og tænkte over det, mens jeg var på en lille
> ferie, og kom frem til nogenlunde det samme som dit første svar.
>
> Vh Janus
>
> "Lars Dam" <larsdamXXspamXXprotectionXX@post2.tele.dk> wrote in message
> news:i6lrkt8tncsngce6a1979t36bcj1lcr4bd@4ax.com...
> > On Thu, 12 Jul 2001 18:46:24 +0200, Lars Dam
> > <larsdamXXspamXXprotectionXX@post2.tele.dk> wrote:
> >
> > >
> > >Det gør du allerede... bytes er signed, så hvis du skal have den
> > >justerede unsignede væri, skal du smide den i en short, eller int.
> > >
> > >byte b = -12;
> > >int i = b<0 ? b+128 : b;
> > >
> > >Frit efter min svigtende hukommelse, såtest det lige selv først for en
> > >sikkerheds skyld
> >
> > Sad lige og checkede dokumentationen.
> >
> > det vil måske være nemmere for dig at konvertere dit byte array til en
> > streng:
> >
> > byte[] ab = ....
> >
> > String s = new String(ab);
> >
> > og derfra bruge charAt() for at få værdien (char er en 16 unicode i.e.
> > unsigned), som du kan cast til int eller short efter behov.
> >
> >
> > vh. ld
>
>



Lars Dam (15-07-2001)
Kommentar
Fra : Lars Dam


Dato : 15-07-01 20:10

On Sun, 15 Jul 2001 20:29:43 +0200, "Janus"
<mailbox.spam@worldonline.dk> wrote:

>Ja, så melder der sig et andet problem.. jeg skal nogle gange bruge en
>funktion der tager værdierne af mit ny int-array og konverterer det til
>ascii karakterer. I ved, så 32 bliver et mellemrum og 33 til et udråbstegn.
>Hvordan gør jeg så det ? Jeg fandt ikke noget i String, Character eller
>Integer.

Brug casting:

int i = 32;
char c = (char)i;

Hvis du skal konverterer et array af ints, så må du selv skrive
metoden.

vh. ld

Janus (15-07-2001)
Kommentar
Fra : Janus


Dato : 15-07-01 20:33

Simpelt og indlysende.. jeg tænkte slet ikke i de baner. Mange, mange tak!
Du har lige reddet mig for en lang nat ;)

Vh Janus

"Lars Dam" <larsdamXXspamXXprotectionXX@post2.tele.dk> wrote in message
news:kiq3lt8h269ijbfm0sa1fr03bb7u5snk7k@4ax.com...
> On Sun, 15 Jul 2001 20:29:43 +0200, "Janus"
> <mailbox.spam@worldonline.dk> wrote:
>
> >Ja, så melder der sig et andet problem.. jeg skal nogle gange bruge en
> >funktion der tager værdierne af mit ny int-array og konverterer det til
> >ascii karakterer. I ved, så 32 bliver et mellemrum og 33 til et
udråbstegn.
> >Hvordan gør jeg så det ? Jeg fandt ikke noget i String, Character eller
> >Integer.
>
> Brug casting:
>
> int i = 32;
> char c = (char)i;
>
> Hvis du skal konverterer et array af ints, så må du selv skrive
> metoden.
>
> vh. ld



Christian Hemmingsen (18-07-2001)
Kommentar
Fra : Christian Hemmingsen


Dato : 18-07-01 23:14

Lars Dam wrote:

> On Thu, 12 Jul 2001 17:09:05 +0200, "Janus"
> <mailbox.spam@worldonline.dk> wrote:
>
> >Jeg kan sådanset godt læse en fil ind i et bytearray, ingen problemer dér...
> >sålænge værdien er karaktererne i filen ikke overskrider ascii værdien 127
> >!! Riiimeligt irriterende, for at bruge en pæn vending.
> >Hvordan får jeg min loader til at returnere et array, der indeholder værdier
> >op til ascii 256 ?
>
> Det gør du allerede... bytes er signed, så hvis du skal have den
> justerede unsignede væri, skal du smide den i en short, eller int.
>
> byte b = -12;
> int i = b<0 ? b+128 : b;

Nu må i sq lige tage og spænde hjelmen.

hvis en byte er -1 så svarer det til 0xff da vi jo bruger to's komplement. Dette
vil vi gerne ha' lavet om til en unsigned værdi som er 255. Derfor er det jo
fuldstændig galt bare at lægge 128 til. Det må derfor være

int i = b < 0 ? 256 + b : b;

Christian Hemmingsen







Lars Dam (18-07-2001)
Kommentar
Fra : Lars Dam


Dato : 18-07-01 23:31

On Thu, 19 Jul 2001 00:14:01 +0200, Christian Hemmingsen
<hemmingsen@kampsax.dtu.dk> wrote:

>Lars Dam wrote:
>>
>> byte b = -12;
>> int i = b<0 ? b+128 : b;
>
>Nu må i sq lige tage og spænde hjelmen.
>
>hvis en byte er -1 så svarer det til 0xff da vi jo bruger to's komplement. Dette
>vil vi gerne ha' lavet om til en unsigned værdi som er 255. Derfor er det jo
>fuldstændig galt bare at lægge 128 til. Det må derfor være
>
>int i = b < 0 ? 256 + b : b;

Du får lige 11 med pil op

Jeg anbefalede også folk til lige at afprøve det, da jeg på det
tidspunkt var lidt rusten i bolden.

Rart at se folk er kritiske

>Christian Hemmingsen

vh. ld

Per Lauge Buresø Hol~ (18-07-2001)
Kommentar
Fra : Per Lauge Buresø Hol~


Dato : 18-07-01 23:37

he he .. ASCII er 7-bit, så i virkeligheden er man på den bortset fra
denne lille detalje, så har Christian jo ret, men om det skyldes at han
allerede får cast'et b til int ved at benytte 256, det er jo et godt
spørgsmål.

Den anden måde ville jo være, at benytte:

int i = 0xff & b;

/per


"Christian Hemmingsen" <hemmingsen@kampsax.dtu.dk> wrote in message
news:3B560A29.500CDE6E@hemmingsen.nospam.kampsax.k-net.dk...
> Lars Dam wrote:
>
> > On Thu, 12 Jul 2001 17:09:05 +0200, "Janus"
> > <mailbox.spam@worldonline.dk> wrote:
> >
> > >Jeg kan sådanset godt læse en fil ind i et bytearray, ingen problemer
dér...
> > >sålænge værdien er karaktererne i filen ikke overskrider ascii værdien
127
> > >!! Riiimeligt irriterende, for at bruge en pæn vending.
> > >Hvordan får jeg min loader til at returnere et array, der indeholder
værdier
> > >op til ascii 256 ?
> >
> > Det gør du allerede... bytes er signed, så hvis du skal have den
> > justerede unsignede væri, skal du smide den i en short, eller int.
> >
> > byte b = -12;
> > int i = b<0 ? b+128 : b;
>
> Nu må i sq lige tage og spænde hjelmen.
>
> hvis en byte er -1 så svarer det til 0xff da vi jo bruger to's komplement.
Dette
> vil vi gerne ha' lavet om til en unsigned værdi som er 255. Derfor er det
jo
> fuldstændig galt bare at lægge 128 til. Det må derfor være
>
> int i = b < 0 ? 256 + b : b;
>
> Christian Hemmingsen
>
>
>
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste