/ 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
unsigned byte
Fra : Morten Krogh Anderse~


Dato : 24-03-03 10:56

Findes der en (godt skjult) datatype, alá ovenstående?

Jeg har brug for en datatype lignende en unsigned byte, dvs. jeg har
brug for at opbevare 8 bits, med værdi fra 0 til 255.

Jeg ved godt at jeg kan lave en klasse til formålet, men da det er til
en lille controller med en java fortolker, har jeg ikke oceaner af
memory og hastighed at gøre godt med.
Desuden er der en del skrivning til, og læsning fra en byte baseret
kommunikation, så det skulle gerne være kompatibel hermed.

Mvh. Morten


 
 
Rune Simonsen (26-03-2003)
Kommentar
Fra : Rune Simonsen


Dato : 26-03-03 20:17

On Mon, 24 Mar 2003 10:56:29 +0100, Morten Krogh Andersen
<spam1@krogh.net> wrote:

> Findes der en (godt skjult) datatype, alá ovenstående?

Array of boolean? (Uden at jeg aner noget som helst om hvor effektivt
booleans er implementeret i java). Eller er det for bit-agtigt?

--

Rune Simonsen

Michael Banzon (27-03-2003)
Kommentar
Fra : Michael Banzon


Dato : 27-03-03 10:42

> Array of boolean? (Uden at jeg aner noget som helst om hvor effektivt
> booleans er implementeret i java). Eller er det for bit-agtigt?

Booleans er implementeret som integers, dvs. de fylder 4 byte i
memmory... det ville nok være |---------------------| <- så
ineffektivt at bruge den metode... Hvad skulle det bruges til,
kan umiddelbart ikke komme på noget der "kræver" unsigned..
det er jo det samme... og hvis du skal regne med tallene, kan
det vel løses med "lidt" matematik...

/ Michael



Michael Banzon (27-03-2003)
Kommentar
Fra : Michael Banzon


Dato : 27-03-03 10:55

> Booleans er implementeret som integers

Eller er det som bytes... hmmm... kan ikke huske det,
men, anyways, det er i hvert fald ikke den mest optimale
løsning...

/ Michael



Soren Davidsen (27-03-2003)
Kommentar
Fra : Soren Davidsen


Dato : 27-03-03 11:03

"Michael Banzon" <anyone@anywhere.anyhow> writes:

> > Booleans er implementeret som integers
>
> Eller er det som bytes... hmmm... kan ikke huske det,
> men, anyways, det er i hvert fald ikke den mest optimale
> løsning...

Der staar ikke noget i java-spec'en om at boolean skal implementeres
som byte eller lign. kun at den kun kan indeholde vaerdierne true
eller false.. Godt design > Optimeret kode.


Mvh,

--
___
Soren Davidsen / o\
Math student, ICSMA (_____)
__ http://www.tanesha.net/ _________________________________(___)_______

Michael Banzon (27-03-2003)
Kommentar
Fra : Michael Banzon


Dato : 27-03-03 12:55

> Der staar ikke noget i java-spec'en om at boolean skal implementeres
> som byte eller lign. kun at den kun kan indeholde vaerdierne true
> eller false.. Godt design > Optimeret kode.

Jamen... ... ... ok... men, jeg kunne forestille mig at det var meget
ineffektivt at allokere 8 gange så meget RAM som man har brug for...

/ Michael



Rune Simonsen (27-03-2003)
Kommentar
Fra : Rune Simonsen


Dato : 27-03-03 18:19

On Thu, 27 Mar 2003 10:41:51 +0100, "Michael Banzon"
<anyone@anywhere.anyhow> wrote:

> > Array of boolean? (Uden at jeg aner noget som helst om hvor effektivt
> > booleans er implementeret i java). Eller er det for bit-agtigt?
>
> Booleans er implementeret som integers[..]

Ja, så er min idé jo lidt klam :)

--

Rune Simonsen

Morten Højer (31-03-2003)
Kommentar
Fra : Morten Højer


Dato : 31-03-03 23:27

Morten Krogh Andersen wrote:

> Findes der en (godt skjult) datatype, alá ovenstående?
>
> Jeg har brug for en datatype lignende en unsigned byte, dvs. jeg har
> brug for at opbevare 8 bits, med værdi fra 0 til 255.
>
> Jeg ved godt at jeg kan lave en klasse til formålet, men da det er til
> en lille controller med en java fortolker, har jeg ikke oceaner af
> memory og hastighed at gøre godt med.
> Desuden er der en del skrivning til, og læsning fra en byte baseret
> kommunikation, så det skulle gerne være kompatibel hermed.
>
> Mvh. Morten
>

Jeg er sikker på, at java ikke har en unsigned-byte-type,
men da jeg selv har haft problemet mange gange, fandt jeg ud
af hvordan man lever med det:

Der er ikke noget problem med java's signed-byte-type som sådan.
Den indeholder nøjagtig de samme bitmønstre som en tilsvarende
unsigned-byte ville gøre. Forskellen ligger udelukkende i
fortolkningen af disse bitmønstre.

Hvis du f.eks. har et tal mellem 0 og 255 liggende i en int, kan
du bare typecaste den til byte:

int a = 155;
byte b = (byte)a;

nu ligger bitmønstret for 155 i b, selvom java opfatter det som
-101 (-101 i tokomplementsystemet har samme bitmønster som 155).

Når du så skal læse værdien fra b igen, skal du bare gøre sådan her:

int c = b & 0xFF;

Så har du, uden nogen overhead eller resourcespild, din oprindelige
værdi 155 tilbage.

Dette er, så vidt jeg ved, den eneste måde at gemme unsigned bytes på
i java, og det er også den måde Sun selv har brugt i deres egne
APIer.

Håber dette hjalp.

Venlig hilsen
Morten Højer


Søg
Reklame
Statistik
Spørgsmål : 177491
Tips : 31966
Nyheder : 719565
Indlæg : 6408455
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste