0

問題:

float32 変数のすべての内容を int32 に渡したいのですが、次のようにします。

float32 source;
int32 destination;

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

これはすべてのコンテンツを渡すわけではありません。キャストを試み、コンテンツを間接的に取得しようとしましたが、ポインター型で問題が発生しました。

質問:

1) float32 のすべてのコンテンツを int32 に取得するにはどうすればよいですか?

4

4 に答える 4

2

バイトごとのコピーが必要な場合は、

assert(sizeof(source) == sizeof(destination));
memcpy(&destination, &source, sizeof(source));
于 2013-11-15T09:55:40.367 に答える
1

割り当てを行うとdestination = sourcesource変数は整数にキャストされるため、切り捨てられます。

この問題を解決する 1 つの方法は、次を使用することunionです。

union U
{
    float32 f;
    int32   i;
};

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

注:この整数を (ネットワークまたはシリアル通信経由で) 送信する場合は、プラットフォームによってエンディアンが異なることに注意してください。

于 2013-11-15T09:57:52.413 に答える