0

私はJavaの例でハフ変換の下でこのプログラムに出くわしました。しかし、C#でプロジェクトを実行していると、この部分的なコード「 0xff000000 」で何が起こっているのか理解できません。このコードは何ですか-0xff000000それは色ですか?その色の場合、どうすればC#に変換できますか?

private void drawPolarLine(int value, int r, int theta) {
            for(int x=0;x<width;x++) {

                for(int y=0;y<height;y++) {

                        int temp = (int)(x*Math.cos(((theta)*Math.PI)/180) + y*Math.sin(((theta)*Math.PI)/180));
                    if((temp - r) == 0)
                         output[y*width+x] = 0xff000000 | (value << 16 | value << 8 | value);

                }
            }
        }

if ((input[y*width+x] & 0xff)== 255) {
    //.........
}
4

4 に答える 4

4

これは、数値のHEX表現にすぎません。0xF = 15、0xF0 = 240、0xFF = 255、0xF12A = 61738、....、0xff000000 = 4278190080

ビット単位の演算を行う場合、コーディングがより理解しやすく、より意味のあるものになります

于 2011-11-10T13:51:12.363 に答える
3

RGBA表記では、左端のバイトは通常アルファチャネルです。特定のピクセルの透明度を示します。0x00は完全に透明なピクセルの場合、0xffは完全に不透明なピクセルの場合です(透明度がまったくないかのように)。

http://en.wikipedia.org/wiki/RGBA_color_spaceを参照してください。

于 2011-11-10T13:44:52.857 に答える
3

16進数の0xFF000000は、ドット付き10進表記で255.0.0.0として表されます。数字の0と1は?

16進文字は通常、特定の10進文字を表しません。これは、基数2(2進数)の数値システムで4ビットを表します。これが、IPアドレスにドット付き10進表記が使用される理由です。16進FFは、常にドット10進表記で255として表示できる、2進法の完全なオクテットを表すために常に使用されるため、ユーザーにとって読みやすくなります。

1111 1111 0001 1111を表したいとすると、16進数のFF1Fは実際には10進数(10進数)の記数法で65311ですが、ドット10進数形式で0.0.255.31を使用します。

Hex ..........Decimal.......bin
0...............0..............0
1...............1..............1
2...............2..............10
3...............3..............11
4...............4..............100
5...............5..............101
6...............6..............110
7...............7..............111
8...............8.............1000
9...............9.............1001
A..............10............1010
B..............11............1011
C..............12............1100
D..............13............1101
E..............14............1110
F..............15............1111
10............16........0001 0000

プログラミング言語のJavaはポインタを提供しないため、オブジェクト/整数などのメモリ位置にアクセスすることはできません。c#が機能するかどうかはわかりませんが、メモリの場所がどのように機能するかを本当に理解したい場合は、c++のような言語を学びます。

于 2011-11-10T13:45:41.993 に答える
2

コード0xff000000は、数値の16進表現にすぎません。具体的には、4,278,190,080という数字です。C#でも同じように使用できます。

このコードでは、おそらく色を表していますが、何をしているのかをよく知らなければわかりません。

于 2011-11-10T13:45:31.653 に答える