Beste allemaal,
Ik heb een functie gemaakt om een UInt_8 array van ASCII-karakters om te zetten naar een decimale waarde UInt_32.
De functie ziet er zo uit:
Ik pas deze functie nu toe in een situatie waarin een array als argument wordt meegegeven die de lengte 10 heeft en de karakters:
als ik voor Len 6, 7, 8, 9 of 10 meegeef krijg ik als Rslt = 4294966054.
De maximale waarde voor een UInt_32 is 4294967295.
Geef ik 1, 2, 3, 4 of 5 mee voor Len, krijg ik, zoals je zou verwachten, respectievelijk: 1, 11, 110, 1108 en 11088 terug.
Iemand een idee waarom ik deze verschillen krijg? Of een suggestie hoe je deze conversie anders kunt uitvoeren (en een conversie andersom, dus van een UInt_32 naar een array van UInt_8's)?
Bedankt!
Ik heb een functie gemaakt om een UInt_8 array van ASCII-karakters om te zetten naar een decimale waarde UInt_32.
De functie ziet er zo uit:
Code:
UInt_32 ASC_to_UInt32(UInt_8 *PtrASC, UInt_8 Len) //Len is de lengte van de array
{
UInt_8 Temp, i, Start, Length;
UInt_32 Rslt=0;
Start = 0;
if(Len > 10) //maximale waarde voor een UInt_32 = is 4294967295, dus 10 karakters
{
Temp = Len - 10;
for(i=0;i<Temp;i++)
{
PtrASC++;
}
Length=10;
}
else
{
Length=Len;
}
for(i=0;i<Length;i++)
{
Temp = *PtrASC;
Temp -= 48; //ASCII-karakter - 48 = de waarde van het karakter.
if(Temp || Start) //Vanaf het eerste waarde hoger dan 0 moet het getal gevormd worden.
{
Start=1;
Rslt += Temp;
Rslt *= 10;
}
PtrASC++;
}
return Rslt;
}
Ik pas deze functie nu toe in een situatie waarin een array als argument wordt meegegeven die de lengte 10 heeft en de karakters:
Code:
{'1','1','0','8','8','5','6','7','0','1'};
als ik voor Len 6, 7, 8, 9 of 10 meegeef krijg ik als Rslt = 4294966054.
De maximale waarde voor een UInt_32 is 4294967295.
Geef ik 1, 2, 3, 4 of 5 mee voor Len, krijg ik, zoals je zou verwachten, respectievelijk: 1, 11, 110, 1108 en 11088 terug.
Iemand een idee waarom ik deze verschillen krijg? Of een suggestie hoe je deze conversie anders kunt uitvoeren (en een conversie andersom, dus van een UInt_32 naar een array van UInt_8's)?
Bedankt!