我將RGB值保存爲9個字符的字符串。由於各種原因,我需要將其轉換爲整數,然後再回到9個字符的字符串。將RGB從字符串轉換爲數字並返回
String1 = '000004000' # almost black
Num = int(String1)
print Num
>>> 2048
String2 = ????(Num)
print String2
>>> 000004000
我該怎麼做?
我將RGB值保存爲9個字符的字符串。由於各種原因,我需要將其轉換爲整數,然後再回到9個字符的字符串。將RGB從字符串轉換爲數字並返回
String1 = '000004000' # almost black
Num = int(String1)
print Num
>>> 2048
String2 = ????(Num)
print String2
>>> 000004000
我該怎麼做?
String2 = "%09d"%Num
我猜...林不知道如何int('000004000')
等於2048 ..
[編輯]經過一番偵查工作,我現在認識到它的八進制數...
oct(2048).zfill(9)
粗這將是成問題的,如果最左邊的數字是非零的任何東西...如果它是你可以做類似
String2 = oct(2048).zfill(9) if len(oct(2048)) <= 9 else oct(2048)[:9]
以下應該做你需要的東西:
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個部分)。
謝謝,它工作得很好! – user1530405
太棒了,很高興它解決了你的問題!完成後,請不要忘記點擊灰色的勾號以接受解決方案。 –
我說得太快了。上面的例程在任何情況下都不起作用。有一些例子不起作用:「191191191」或「255255008」。我得到錯誤消息「ValueError:invalid int for()with base 8:'255255008' – user1530405