说我有一个整数,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. Java:将字节转换为整数
- 5. 将字节转换为整数
- 6. SqlDataReader将字节转换为整数vb.net
- 7. 将字节转换为短或整数
- 8. 将整数转换为字节
- 9. 字节转换为整数Python中
- 10. 转换JavaScript整数到字节数组,并返回
- 11. 将双字节整数转换为单字节-Javascript
- 12. C#转换空间分隔的字节数组整数到整数
- 13. 转换一个列表这是一个字节到整数
- 14. 将整数从0到255(1字节)转换为NSDATA
- 15. 将字节转换为整数,从短到长...等
- 16. 转换数字节数组
- 17. 将整数转换为字符数组(字节)
- 18. 转换vb.net字节到PHP
- 19. 转换字节[]到char []
- 20. 转换字节到int
- 21. 字节数组到图像转换
- 22. 转换字节数组到文件
- 23. ReadTimeout转换字节数组到流
- 24. 流到Oxygene的字节数组转换
- 25. 转换字节数组到UIImage
- 26. 转换整数写数字
- 27. MAXIMA字符串到整数转换
- 28. 整数到字符串转换方法
- 29. 字符到整数转换在fortran
- 30. 如何将字节数组转换为整数,然后转换为字符串,以显示整数值?
'hex(13941412)'会够吗? – kennytm 2010-04-01 17:31:56
我想要每种颜色的编号。十六进制返回一个str对象。感觉不到最佳。 – quano 2010-04-01 17:40:42