簡體   English   中英

將float32的內容傳遞給C中的int32

[英]Passing content of float32 to a int32 in C

問題:

我想將float32變量的所有內容傳遞給int32,但是請執行以下操作:

float32 source;
int32 destination;

source = 23.59463;         // Hex = 0x41BCC1CE 
destination = 0;           // Hex = 0x00000000
destination = source;      // Destination = 0x00000017 = 23 

這不會傳遞所有內容。 我嘗試了強制轉換,並試圖間接獲取內容,但是隨后我遇到了指針類型的問題。

題:

1)如何將float32的所有內容都捕獲到int32中?

如果要逐字節復制,那就是

assert(sizeof(source) == sizeof(destination));
memcpy(&destination, &source, sizeof(source));

作為替代答案,指針總是很有趣:

destination = *(int32*)&source;

當您執行分配destination = sourcesource變量轉換為整數,從而被截斷。

解決此問題的一種方法是使用union

union U
{
    float32 f;
    int32   i;
};

union U u;
u.f = 23.59463;
printf("%08x\n", u.i);

注意:如果要發送此整數(通過網絡或串行通信),則必須記住不同的平台具有不同的字節序

如果“所有內容”表示所有數字,則可以乘以源以獲得定點目標。

destination = source * 100000;//23.59463 * 100000 = 2359463

暫無
暫無

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

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