Konvertera en CHAR till Hex?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Konvertera en CHAR till Hex?

Inlägg av danielr112 »

mri. vilket ska det vara i mitt fall? unsigned eller signed?
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Re: Konvertera en CHAR till Hex?

Inlägg av cyr »

Alltid unsigned om man vill behandla "bara binär data". Signed endast om det verkligen behövs negativa tal.
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Konvertera en CHAR till Hex?

Inlägg av danielr112 »

Tack cyr!

Måste verkligen läsa upp mig på C igen :(
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Konvertera en CHAR till Hex?

Inlägg av bos »

Just signed/unsigned borde nog tala för sig själva, men det kan nog vara en idé att fräscha upp minnet om de olika datatyperna som språket besitter. Ibland kan det bli en del trix om man utgår från att en datatyp ser ut på ett visst sätt medan den i själva verket beter sig på ett annat.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Re: Konvertera en CHAR till Hex?

Inlägg av cyr »

Det finns många fällor man kan råka hamna i när man blandar signed/unsigned, int/float och typer med olika bitlängd.

Man lär sig efter hand av sina egna misstag om inte annat :wink:
dangraf
Inlägg: 530
Blev medlem: 9 juni 2003, 15:30:56
Ort: göteborg

Re: Konvertera en CHAR till Hex?

Inlägg av dangraf »

mri skrev:om char är signed och variabeln 'char byte' har värdet 0xff, då är byte>>4 lika med 0xff (-1), när man kaske förväntade sig 0x0f (15).
Detta blev jag lite nyfiken på eftersom jag aldrig råkat ut för felet. Testade precis i C30 och det blir som du beskriver men jag förstår inte riktigt varför.

Hur tänker komilatorn i fallet då "signed char 0xff>>4=0xff"?

Jag får det till att antingen bli 0x0F som du skrev ovan eller så tolkar jag det som -1/16 =0 men det är ju fel :-)
Användarvisningsbild
mri
Inlägg: 1165
Blev medlem: 15 mars 2007, 13:20:50
Ort: Jakobstad, Finland
Kontakt:

Re: Konvertera en CHAR till Hex?

Inlägg av mri »

När man högerskifrar ett negativt tal i tvåkomplementform, måste CPU'n fylla på med ettor i den mest signifikanta biten, annars blir ju talet positivt. Det som är lite lurigt här är att fast man högerskiftar ett negativt tal i all oändlighet blir det aldrig noll, det stannar vid -1 (0xff).
Skriv svar