I would like to store a signed int32
into an unsigned uint32
such that I can extract a int32
from it later. The value of the uint32
itself isn't used when it stores an integer like this, but I can't use a union in this case unfortunately. The way I currently do this is by simply converting it:
int32 signedVar = -500;
uint32 unsignedVar = uint32(signedVar);
func(int32(unsignedVar)); // should supply the function with -500
This appears to work, but I'm afraid it might not be portable, and that there might be needless conversions happening behind the scenes for what I'm hoping is a no-op.
Is -500 or any other negative number guaranteed to survive this conversion? If not, is there a "painless" (none of the types are changed, only the conversion method) alternative?
Edit: I'm most concerned with making sure the value in int32
is preserved in a uint32
so it can be used as a int32
of the same value later, the uint32
version is never used. (editing because SO asked me to explain how this isn't a duplicate of another question; it doesn't specify what the results of the conversion should look like, or that it needs to be symmetrical like this, making it too general to be applied here)