Solved uint64 on raspberry pi 2
-
Hi,
I am trying to use uint64_t on RPI2 but I don't understand what is happening (unlike int64_t which seems ok).
Program:
uint64_t t1, t2, t3; t1 = pkthdr->ts.tv_sec % 86400; t2 = (uint64_t)t1*(uint64_t)1000000; t3 = ( int64_t)t1*( int64_t)1000000; print("%llu, %llu, %llu - ", t1, t2, t3); print("%d, %d - ", sizeof(uint64_t), sizeof(int64_t));
Output:
84642, 18446744072452205696, 84642000000 - 8, 8 - 84643, 18446744072453205696, 84643000000 - 8, 8 -
Sizeof(uint64_t) is 8 => ok,
multiply with int64_t is ok,
where 18446744072453205696 come from ? Does it compute on 32 bits instead of 64 ? Is there a work around ?Thank you for your help
Etienne -
I make some tests:
The values are computed on int32 instead of uint64.
I have the same problem on RPI2 and on ubuntu.
If I return the values to another function, the values are computed correctly. I hope the problem won't come back.