起因是,某天逛群看到了加在群名片前可以改變顏色的神秘字符,類似於
<%ĀĀÒ>高級灰
<&ÿÒUÐ>紫色
第一種是帶動態顏色效果的,第二種是普通的純色。觀察可以得出他們對應的格式是<%ĀĀ>和<&ÿ>隨后聽說這一串神秘字符組成跟字符編碼和RGB有關,於是我用Python測試了一下,以純色字符的紫色為例:
def str_to_num(color_str):
for i in color_str:
print(ord(i), end=' ') # ord函數將字符轉為對應ASCII編碼
print()
gray = 'ĀĀÒ'
str_to_num(gray)
# 輸出 255 210 85 208
隨后我去查RGB為(256, 7, 210)的顏色,發現確實是紫色,帶入其他示例也都符合。因此我們可以大膽猜測這個神秘字符的確跟它的ASCII碼編碼值有關。
這樣是不是意味着我們可以定制顏色?
於是我們反過來,以#1F1E33(十六進制顏色碼)舉例:
def num_to_str(color, mode):
for i in rgb_list:
print(chr(i), end='') # chr函數將ASCII碼轉為字符
print()
camellia = (31, 30, 51)
num_to_str = (camellia)
# 輸出 3
然后我用得到的字符拼接成神秘字符的格式,加在群名片前面,盡管有些字符是特殊字符無法顯示,但顏色確實變成了對應的樣子。因此我們可以得出之前猜測相應的結論了。
整理了一下寫出下面完整的轉換代碼:
def ColorCode(RGB_num):
RGB_str = ''
for i in RGB_num:
RGB_str += chr(i)
return '<%ÿ' + RGB_str + '>'
print(ColorCode(tuple(map(int, input('輸入RGB顏色碼(空格間隔):').split(' ')))))
說了那么多其實就是無聊。
