簡體   English   中英

將uint64轉換為uint32

[英]convert uint64 to uint32

我有一個uint64變量...但我想傳遞它的函數只接受uint32。

我嘗試使用static unsigned int ToUInt32(uint64 variable); 引用MSDN,但它給出了精度丟失的錯誤。

有沒有辦法將uint64轉換為uint32而不丟失任何數據?

不能。你不能將2加侖的水裝入一加侖的容器中,而且你不能將64位數據裝入32位值。

好好想想你想要做什么。 你正在拿一個可能需要64位然后減半的數字。 當然,在這種情況下你會丟失數據。

如果你確定給出的數字不會大於uint32那么你可以試試這個

uint64 largeNumber = 9876543210;
uint32 smallNumber = largeNumber & 0xFFFFFFFF;

但如果它超過32位,這將失去你的一半數量。

不是.32位整數比64位整數小32位。 64位整數可以包含32位整數的任何內容,但反之亦然。

有沒有辦法將uint64轉換為uint32而不丟失任何數據?

是的,但前提是您知道可能的uint64值的某些特征,並且這些特征允許無損轉換。

這里最有可能的是知道你的值永遠不會超過uint32的最大值。 在這種情況下,您實際擁有的是以64位存儲的32位值,轉換只是更改它的存儲方式而不是更改值。 要在這種情況下進行轉換,只需轉換它,例如使用static_cast。

如果你想處理任意uint64值,那么這根本不可能。 如果可能,您可以通過重復應用轉換將任何文件(包括40 TB數據庫)壓縮到單個32位值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM