4

次のコード行を見つけました:this.red = (float)(par4 >> 16 & 255) / 255.0F;ここで red は として宣言されていfloatます。

特に完全なコードは次のとおりであるため、私はそれが何をするのか理解しようとしています:

this.red = (float)(par4 >> 16 & 255) / 255.0F;
this.blue = (float)(par4 >> 8 & 255) / 255.0F;
this.green = (float)(par4 & 255) / 255.0F;
this.alpha = (float)(par4 >> 24 & 255) / 255.0F;
GL11.glColor4f(this.red, this.blue, this.green, this.alpha);

したがって、これは int ( par4) のさまざまな場所を使用してテキストに色を付けていると推測しています。この場合par4は等しい。553648127

これらの 4 行、特に ? は何を意味し>> 16 & 25ますか?

4

4 に答える 4

0

par4RGB値とアルファを4バイトの整数として色を定義しているようです。

>>そのため、4 バイトは、演算子を使用して「下位」バイトを右にシフトし、「上位」バイトを& 255. その後、バイト値は、/ 255.0f.

整数の 4 バイトが AARRGGBB のようなもので、AA、RR、GG、BB がそれぞれ 1 バイトを表し、たとえば赤色を選び出したい場合、最初に で緑色と青色のバイトをシフトし>> 16ます。整数 0000AARR の場合、アルファを でマスクし& 255ます。これにより、整数 00000000RR が残ります。ここで、RR は 0 ~ 255 の値を持つ 1 バイト (2 ハーフバイト) になり、最終的に 0.0 の間の浮動小数点数に変換されます。と で割ると 1.0 になり/ 255.0fます。

于 2013-06-22T23:08:57.147 に答える