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

它只是一个数字的十六进制表示。0xF=15, 0xF0=240, 0xFF=255, 0xF12A=61738, ...., 0xff000000=4278190080

当您进行按位运算时,编码更容易理解且更有意义

于 2011-11-10T13:51:12.363 回答
3

在 RGBA 表示法中,最左边的字节通常是 alpha 通道。它表示给定像素的透明度。0x00 表示完全透明的像素,0xff 表示完全不透明的像素(好像根本没有透明度。)

请参阅http://en.wikipedia.org/wiki/RGBA_color_space

于 2011-11-10T13:44:52.857 回答
3

十六进制数 0xFF000000 以点十进制表示法表示为 255.0.0.0。数字0和1代表什么?

十六进制字符通常不代表特定的十进制字符。它表示 Base 2(二进制)数字系统中的 4 位。这就是 IP 地址使用点十进制表示法的原因。它使用户更具可读性,因为始终使用 Hex FF 来表示完整的二进制八位字节,这些二进制八位字节始终可以以点十进制表示法显示为 255。

假设您想表示 1111 1111 0001 1111,您将使用点十进制格式的 0.0.255.31,即使十六进制中的 FF1F 实际上是基数为 10(十进制)数字系统中的 65311。

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只是数字的十六进制表示。具体来说,数字 4,278,190,080。您可以在 C# 中以相同的方式使用它。

在这段代码中,它可能代表一种颜色,但如果不了解您在做什么,就很难分辨。

于 2011-11-10T13:45:31.653 回答