30. august 2012 - 14:36Der er
7 kommentarer og 1 løsning
XOR af bytes
Halløj Eksperter!
Jeg sidder og forsøger at kode et lille program til noget seriel-kommunikation med et apparat. Den vil gerne have en block check character, som er alle bytes der sendes til den inklusive STX og ETX.
Grundet opbygningen af min kode, kan jeg dog nøjes med altid at sammenligne 2 bytes, men "^" operatoren fungerer kun med int.
Så det store spørgsmål er: Er der nogen hurtig/nem måde at XOR'e 2 bytes, eller skal man ud i at konvertere begge bytes til int, XOR'e, og konvertere tilbage til bytes?
Yeah - Det var også ca. den løsning jeg selv kom frem til. Det var ret så meget nemmere end jeg havde forventet, fordi at jeg med "(int)" kunne behandle mine bytes som integers. Jeg havde frygtet for at skulle jonglere en masse variabler i forskellige former.
Jeg havde ellers i starten bare lavet groft sagt: bytea ^= byteb hvor den så brokkede sig over at det ikke var integers. Efter jeg lavede det explicit, så kørte det bare lige som det skulle. Set i retrospekt er det muligt at det er fordi at jeg kørte en konvertering på en string som blev lavet til hex, hvor "byteb" står i ovenstående eksempel.
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.