Avatar billede djhb Nybegynder
13. februar 2009 - 11:58 Der er 4 kommentarer

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?
Avatar billede arne_v Ekspert
13. februar 2009 - 15:07 #1
byte har range 0 ... 255
sbyte har range -128 ... 127

hvis du vil jhave en negativ vaerdi skal du bruge sbyte
Avatar billede arne_v Ekspert
13. februar 2009 - 15:08 #2
Men muligvis kan du ignorere problemet.

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.
Avatar billede djhb Nybegynder
13. februar 2009 - 22:21 #3
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.
Avatar billede arne_v Ekspert
14. februar 2009 - 02:49 #4
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.
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