Avatar billede repsac666 Nybegynder
11. januar 2005 - 14:12 Der er 5 kommentarer og
1 løsning

Convertering mellem int og byte

Jeg har følgende code hvor jeg gerne skulle ende op med et byte hvor de 2 sidste bits er nuller og resten bliver sat alt efter om en checkBox er checked == true eller ej:

byte flags = new byte();
flags = 0;
if (cbTCPURG.Checked == true)
    flags += 1;
flags = flags << 1;

if (cbTCPACK.Checked == true)
    flags += 1;
flags = flags << 1;

if (cbTCPPSH.Checked == true)
    flags += 1;
flags = flags << 1;

if (cbTCPRST.Checked == true)
    flags += 1;
flags = flags << 1;

if (cbTCPSYN.Checked == true)
    flags += 1;
flags = flags << 1;

if (cbTCPFIN.Checked == true)
    flags += 1;

Når jeg kompilerer denne kode får jeg følgende fejl:
"Cannot implicitly convert type 'int' to 'byte'"
ved de linier med "flags = flags << 1;"

Er der nogen der ved hvordan jeg kommer om dette problem? Den mener åbentbart at flags er en integer selvon jeg deklarerer den som en byte.
Avatar billede arne_v Ekspert
11. januar 2005 - 14:16 #1
flags = (byte)(flags << 1);
Avatar billede arne_v Ekspert
11. januar 2005 - 14:17 #2
problemet er at
  flags er en byte
men
  (flags<<1) er en int
Avatar billede gammelhat Nybegynder
11. januar 2005 - 14:19 #3
flags <<= 1;
Avatar billede repsac666 Nybegynder
11. januar 2005 - 14:25 #4
Jeg takker. "flags = (byte)(flags << 1);" løste det.
Avatar billede erikjacobsen Ekspert
11. januar 2005 - 14:35 #5
Det er vist nogenlunde korrekt at sige at alle mellemregninger med heltalsstørrelser
på og under 32 bit, laves som 32 bit, og resultatet bliver 32 bit, altså en int.
Argumentet er vel at resultatet for fx en byte kan blive større end en byte.
Det er så programmørens opgave og ansvar at afgøre om resultatet skal tilbage i en
variabel på mindre end 32 bit.
Avatar billede arne_v Ekspert
11. januar 2005 - 14:53 #6
så ligger jeg et svar
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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