0
我想將簽名的int32
存儲爲一個未簽名的uint32
,這樣我可以稍後從中提取int32
。當它存儲像這樣的整數時,不會使用uint32
本身的值,但不幸的是我不能在這種情況下使用聯合。我目前做的方式是通過簡單地將其轉換:有符號整數無符號和後面?
int32 signedVar = -500;
uint32 unsignedVar = uint32(signedVar);
func(int32(unsignedVar)); // should supply the function with -500
這似乎工作,但恐怕它可能無法移植,而且有可能是不必要的轉換髮生在幕後爲我」希望是沒有任何操作的。
是-500還是其他任何負數保證能夠在轉換中倖存下來?如果沒有,是否存在「無痛」(沒有任何類型改變,只有轉換方法)替代方案?
編輯:我最關心的是確保在int32
值在uint32
因此它可以作爲以後的值相同的int32
保存時,uint32
版本從未使用過。 (編輯是因爲我要求我解釋這不是另一個問題的重複;它沒有說明轉換的結果應該是什麼樣的,或者它需要像這樣對稱,使它過於籠統這裏應用)
爲什麼你需要去那裏又回來? – NathanOliver
使用reinterpret_cast? –
@NathanOliver - tbh,懶惰。有一種邊緣情況,可能會在數組中存在負索引,並且我不希望將該機器寫入管道以處理它。 –