說我有一個整數,13941412,我希望分成字節(數字實際上是0x00bbggrr形式的顏色)。你會怎麼做?在c中,您將數字轉換爲BYTE,然後移位。你如何在Python中轉換爲字節?整數到字節轉換
整數到字節轉換
回答
使用按位數學運算,將「字節」已經存在:
def int_to_rgb(n):
b = (n & 0xff0000) >> 16
g = (n & 0x00ff00) >> 8
r = (n & 0x0000ff)
return (r, g, b)
謝謝,這個伎倆! – quano 2010-04-01 17:42:20
你可以用0xff按位&
得到第一個字節,然後移動8位並重復以獲得其他3個字節。
編輯:對於顏色,你知道你需要最不重要的三個字節。所以,你可以使用一個更好的辦法:
r = num & 0x0000ff
g = (num & 0x00ff00) >> 8
b = (num & 0xff0000) >> 16
爲了只提取每種顏色的字節,使用msw的方法會更簡單。我將留下這篇文章作爲一個拉出字節的一般方法。 – 2010-04-01 17:37:33
這樣,除第一個字節外的所有字節都變爲0。如果我轉移它。 – quano 2010-04-01 17:37:50
您需要將中間結果存儲在變量中。用msw的解決方案。 – 2010-04-01 17:41:38
下面是適用於任何語言的優化方案,並且不傷害易讀性。
取而代之的是:
b = (n & 0xff0000) >> 16
g = (n & 0xff00) >> 8
r = (n & 0xff)
使用本:
b = (n >> 16) & 0xff
g = (n >> 8) & 0xff
r = n & 0xff
兩個原因:
有更少的常量不慢,而且可能會更快。
具有較小的常量不會更慢,並且可能更快 - 在像C這樣的語言中,較短的機器指令可能是可用的;在像Python這樣的語言中,實現可能會彙集小整數。
出於某種原因,您的建議在我的機器上運行速度比msw慢5%左右 – 2012-07-11 00:16:59
- 1. 轉換字節數組爲整數
- 2. 轉換整個字節[]到UINT
- 3. 字節到字節[]轉換?
- 4. 將整數轉換爲字節
- 5. 將整數轉換爲字節
- 6. Java:將字節轉換爲整數
- 7. 將2個字節轉換爲整數
- 8. 將字節轉換爲整數
- 9. 將5個字節轉換爲整數
- 10. SqlDataReader將字節轉換爲整數vb.net
- 11. 字節轉換爲整數Python中
- 12. 將字節轉換爲短或整數
- 13. 轉換JavaScript整數到字節數組,並返回
- 14. 字節轉換爲整數,然後轉換爲Java中的字符串轉換
- 15. 將雙字節整數轉換爲單字節-Javascript
- 16. C#轉換空間分隔的字節數組整數到整數
- 17. 對於我的項目我想將整數轉換爲字節數組和字節數組回到整數
- 18. 轉換一個列表這是一個字節到整數
- 19. 將字節轉換爲整數,從短到長...等
- 20. 將整數從0到255(1字節)轉換爲NSDATA
- 21. 轉換數字節數組
- 22. 將Ruby字符串轉換爲整數數組的字節?
- 23. 將整數轉換爲字符數組(字節)
- 24. 轉換字節[]到char []
- 25. 轉換vb.net字節到PHP
- 26. 轉換字節到int
- 27. 長到字節轉換
- 28. 字節數組到圖像轉換
- 29. 轉換`UInt16`到字節數組
- 30. 轉換字節數組到UIImage
'hex(13941412)'會夠嗎? – kennytm 2010-04-01 17:31:56
我想要每種顏色的編號。十六進制返回一個str對象。感覺不到最佳。 – quano 2010-04-01 17:40:42