Witam.
Napisałem 2 funkcje które konwertują "long int" do char'a zapisane bitowo i na odwrót. Po wykonaniu pierwszej w Value mam następujące wartości
00 00 03 E8
natomiast gdy wykonam drugą jako liczbę otrzymuje
0x000002E8
Co mogę robić źle, ewentualnie czy macie może inny sposób rozwiązania mojego problemu.
Napisałem 2 funkcje które konwertują "long int" do char'a zapisane bitowo i na odwrót. Po wykonaniu pierwszej w Value mam następujące wartości
00 00 03 E8
natomiast gdy wykonam drugą jako liczbę otrzymuje
0x000002E8
Co mogę robić źle, ewentualnie czy macie może inny sposób rozwiązania mojego problemu.
void ulIntToChar(long unsigned int value, char *l)
{
*l++ = value >> 24;
*l++ = (value >> 16) & 0x000000FF;
*l++ = (value >> 8) & 0x000000FF;
*l++ = value & 0x000000FF;
*l++ = '\0';
}
long unsigned int CharToulInt(char *value)
{
long int value_ret;
value_ret = 0;
value_ret = (value_ret+value[0])<<8;
value_ret = (value_ret+value[1])<<8;
value_ret = (value_ret+value[2])<<8;
value_ret = value_ret+value[3];
return value_ret;
}
char Value[4];
int main (void)
{
long unsigned int wartosc;
long unsigned int wartosc1;
wartosc = 1000;
while(1)
{
ulIntToChar(wartosc,Value);
wartosc1 = CharToulInt(Value);
}
}