Avatar billede emileej Nybegynder
13. november 2002 - 06:54 Der er 5 kommentarer og
1 løsning

Type casting fra int til byte og tilbage

Jeg har lavet et eksempel:

        int temp1=200, temp3;
        byte temp2=(byte)temp1;
        temp3=(int)temp2;
        System.out.println("Int: "+temp1+" Byte: "+temp2+" ByteToInt: "+temp3);

Output er:
        Int: 200 Byte: -56 ByteToInt: -56

Jeg vil meget gerne have en metode, hvor jeg kan konvertere værdier fra int til byte og tilbage til int igen, således at output bliver således:

        Int: 200 Byte: [byte værdi] ByteToInt: 200

E-)mil
http://eej.dk
Avatar billede disky Nybegynder
13. november 2002 - 06:54 #1
int temp3=((int)temp2)&0xff; //fjerne fortegnet, uden at ødelægge værdien.

Problemmet er at fortegnet i din byte bliver extended.
Avatar billede disky Nybegynder
13. november 2002 - 06:54 #2
int temp1=200, temp3;
        byte temp2=(byte)temp1;
        temp3=((int)temp2)&0xff;
        System.out.println("Int: "+temp1+" Byte: "+temp2+" ByteToInt: "+temp3);

Okay nogle gange flipper experten, her er hele dit lille eksempel, der udskriver som du forventer.

byte værdien er -200 da en byte kun kan indeholde tal imellem -128 og 127, men da vi and'er i int'en for vi den oprindelige værdi tilbage.
Avatar billede emileej Nybegynder
13. november 2002 - 13:03 #3
Ahh - det er der jeg er gået galt i byen. Jeg viste at der var 256 mulige værdier for en byte, men jeg gik ud fra at det var 0 - 255 :p
Avatar billede emileej Nybegynder
13. november 2002 - 13:04 #4
Hmm - for to sekundter siden så dette spm. ok ud - nu er det totalt messed up... Disky - vil du ikke lige skrive dit svar igen?
Avatar billede disky Nybegynder
13. november 2002 - 14:19 #5
int temp3=((int)temp2)&0xff;

Sådanne :)
Avatar billede emileej Nybegynder
14. november 2002 - 07:57 #6
Tak skal du have! Det fungerer upåklageligt.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester