我在java示例中的hough变换下遇到了这个程序。但是我在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) {
//.........
}
答案 0 :(得分:4)
它只是一个数字的HEX表示。 0xF = 15,0xF0 = 240,0xFF = 255,0xF12A = 61738,....,0xff000000 = 4278190080
在进行按位操作时,编码更容易理解,编码也更有意义
答案 1 :(得分:3)
在RGBA表示法中,最左边的字节通常是alpha通道。它表示给定像素的透明度。 0x00表示完全透明的像素,0xff表示完全不透明的像素(好像根本没有透明度。)
答案 2 :(得分: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 ++这样的语言。
答案 3 :(得分:2)
代码0xff000000
只是数字的十六进制表示。具体来说,数量为4,278,190,080。您可以在C#中以相同的方式使用它。
在这段代码中,它可能代表一种颜色,但如果不了解更多关于你正在做什么的话,很难说清楚。