int til byte convertering driller med negative værdier
Jeg prøver at konvertere forskellige int værdier til byte, heraf nogle negative værdier.
Jeg bruger... int value; byte byteValue;
byteValue = Bitconverter.Getbytes(value);
Og det går ganske godt med de positive værdier :)
Men når jeg prøver at konvertere forskellige negative værdier, så... for jeg en forkert værdi
-116 returner 140 fx. (256-116)
(byte)-116, giver samme resultat
mens -78 returner 178, (jeg antager 1 indikerer, at værdien er negativ)
Dataene sendes via seriel kommunikation, og skal efterfølgende anvendes til beregning. I øjeblikket fejler beregningen på nogle af dataene, og jeg har disse negative værdier, stærkt mistænkt.
Andre værdier, der fejler er -93,-69,-40,-13
Måske blander jeg begreberne sbyte og byte sammen?
Hvis du sende 8 bit med det rigtige bit moenster kan modtager laese data korrekt - og modtager er ligeglad med om din kode opfatter det som signed eller unsigned.
Jeg vil gerne sende fx. 175 0xAF (Hex-værdi), skrevet med en byte. Der er tale om et binært format. Den fejler så ikke.
Først brugte jeg Port.Write kommandoen, men dataene blev mere end korrupte. Så jeg prøvede ovenstående, Bitconverter.Getbytes, og det virker på hen ved ca. 75% af dataene, undtagen ved visse negative værdier.
Hvis vi antager, jeg vil have en negativ værdi, præsenteret som 1 signed byte, så er det ikke et problem, når det skal sendes, fordi Port.Write arbejder med byte og ikke sbyte.
Men jeg kan godt se problemet i at fx. -75 ~ B5 og så konverteret tilbage til B5 ~ 181
Desværre har jeg endnu ikke haft mulighed for at sende data retur, for det kunne give et vink, om hvad der forventes.
Det i den anden ende læser 0xB5 og hvorvidt det opfattes som -75 eller 181 har intet at gøre med om du opfatter det som -75 eller 181.
Synes godt om
Ny brugerNybegynder
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.