将RGB从字符串转换为数字并返回

时间:2016-02-12 06:03:24

标签: python colors

我将RGB值保存为9个字符的字符串。由于各种原因,我需要将其转换为整数,然后再将其转换为9个字符的字符串。

String1 = '000004000'   # almost black
Num = int(String1)
print Num
>>> 2048
String2 = ????(Num)
print String2
>>> 000004000

我该怎么做?

2 个答案:

答案 0 :(得分:2)

String2 = "%09d"%Num

我想......我不确定int('000004000')如何等于2048 ..

经过一些侦探工作,我现在意识到它的八进制数......

oct(2048).zfill(9) 
如果最左边的数字不是零,那么粗略的这将是有问题的...如果是,你可以做类似的事情

String2 = oct(2048).zfill(9) if len(oct(2048)) <= 9 else oct(2048)[:9]

答案 1 :(得分:0)

以下内容可以满足您的需求:

import socket
import struct

def to_integer(text):
    return struct.unpack('>I', socket.inet_aton('0.{}.{}.{}'.format(text[:3], text[3:6], text[6:])))[0]

def to_string(value):
    return '{:03d}{:03d}{:03d}'.format((value >> 16) & 255, (value >> 8) & 255, value & 255, )

print to_integer('000000001')
print to_integer('000004000')

print to_string(1)
print to_string(1024)

这将显示以下内容:

1
1024
000000001
000004000

您拥有的字符串格式为[0-255][0-255][0-255]to_integer使用库函数将IP地址转换为数字(恰好有相同的格式,除了有4个部分)。