Sida 1 av 1

Datatyps konvertering.

Postat: 27 februari 2006, 11:17:35
av DeVille
Halloj!

När jag läser in ett 8-bitars värde från PINC.. så lägger jag det i en unsigned char.

Men nu vill jag få det lagrat i en int.. eller float variablel

Hur gör jag på bästa sätt konverteringen, eller undviker konvertering?


Kör med avr-gcc och en at90s8515.. ja jag vet den är gammal osv.. men den duger till mig för tillfället.


Det 8-bitars värdet kommer från en A/D som ger spänningen i min wheatstone brygga. Mäter temperatur mha en PT100 givare.

Tacksam för hjälp här.

Postat: 27 februari 2006, 11:36:28
av sodjan
Frågan är väl *varför* du behöver "konvertera" ?

Och float bör man nog undvika om det inte är *alldeles* nödvändigt
att använda det (vilket det sällan är om man tänker till lite...)

Men, är det inte bara att tilldela en "int" värdet av en "char"
rakt av ? Och kompilatorn kommer att göra vad som behövs ?

Postat: 27 februari 2006, 11:56:46
av DeVille
Okej så det är så enkelt då!

Kod: Markera allt

unsigned char a;
int b;

a=PINC;         //In med 8-bitars tal
b=a;            //Klart??
Ska prova det senare.. Dumt att man ska göra saker krångligt för sig!

Postat: 27 februari 2006, 12:02:13
av sodjan
När du ändå provar, prova även med "b = PINC;", om du
inte behöver "a" till annat, vill säga... :-)

Postat: 27 februari 2006, 19:20:58
av Kaggen
DeVille:

Normen brukar vara "x=(typ)variable" där typ är typen du vill konvertera till.

Enligt ditt exempel nedan:

Kod: Markera allt

unsigned char a;
int b;

a=PINC;         //In med 8-bitars tal
b=(int)a;            //Konvertera från char till int.
Vissa kompilatorer varnar om man inte använder typkonvertering och detta är ju bra ifall man gör det av misstag. Du kan annars få väldigt konstiga fenomen.

Postat: 28 februari 2006, 09:39:01
av DeVille
Tackar för hjälpen..

b=PINC;

funkade finfint..

Anledningen till att jag använt unsigned char var pga en nödlösning som inte behövs längre..

/DeVille