|
| 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
>
>
>
>
>
>
| |
|
|