我正在查看Identicons的原始源代碼。 有一個代碼位,它的一些位操作,以提取的紅,綠和藍分量:0x01和0x01f之間的差異
int blue = (code >> 16) & 0x01f;
int green = (code >> 21) & 0x01f;
int red = (code >> 27) & 0x01f;
代碼變量是一個32位的整數。
我的問題是這樣的:數字0x01和0x01f有什麼區別?
我假設f表示值是一個浮點數,但爲什麼使它浮動?二進制中的浮點表示與整型表示是不同的嗎?如果移植某個特定語言不使用相同的表示形式,那麼這不會導致便攜性原因的問題嗎?
此外,我可能因爲不瞭解0x01f問題而讀錯了,但是這不是僅僅將紅色,綠色和藍色表示設置爲0或1,具體取決於最低位?
當然,這是我的愚蠢。顯然,我的大腦今天還沒有啓動。 所以通過這個代碼,RGB數據將是一個16位565 RGB值。 但是,顏色的綠色部分僅使用6位中的5個。 這是否意味着Identicon代碼沒有使用哈希,ip等中提供的總位數? – Brad 2010-08-09 04:26:48
無論如何,Identicons是什麼?狂派的一些遠房表兄弟? – NullUserException 2010-08-09 04:28:05
Identicons是分配給您的StackOverflow配置文件的圖像(就像我的天賦在那裏的粉色和白色identicon一樣)。它們是基於一個整數創建的,以唯一標識用戶。因此,例如,如果我匿名發帖,並且圖像被附加到我發佈的每篇文章中,則沒有人可以假裝他們是我(因爲他們擁有不同的知識產權,並且會散列到不同的圖像)。您可以將它用於許多事情,IP,文件散列等。它允許人們快速解釋給定的圖像是否匹配特定的散列,而無需查看十六進制編碼的數字。 – Brad 2010-08-09 04:34:49