0

このような変換を行う利点はありますか

int i = 1024;
byte b = (byte)i;

これをやり過ぎ

int i = 1024;
byte b = *((byte*) &i);

つまり、2 番目の方法を使用する場合は、安全でないコードを使用する必要があります。つまり、JIT は希望どおりに最適化できないことを意味します (内部的には 2 番目の方法を使用していると思います)。

最初の方法と 2 番目の方法をいつ、なぜ使用するのか説明してもらえますか?

ご挨拶

4

1 に答える 1

2

これらの 2 つは等価ではありません。

1 つ目は、単純な言語定義のキャストです。その結果は明確に定義されています。最初の結果は最下位 8 ビットを返します。

2 番目は事実上、再解釈キャストです。メモリ内の最初の 8 ビットを返します。通常のリトルエンディアン システムでは同じですが、ビッグ エンディアン システムでは異なります。

再解釈キャストが役立つまれな例がいくつかありますが、これはその 1 つではありません。再解釈キャストでしか解決できない問題がない限り、常に通常のキャストを使用する必要があります。

于 2012-08-05T09:36:24.363 に答える