QQ群名片顏色程式碼的研究
阿新 • • 發佈:2022-03-20
起因是,某天逛群看到了加在群名片前可以改變顏色的神祕字元,類似於
<%ĀĀÒ>高階灰
<&ÿÒUÐ>紫色
第一種是帶動態顏色效果的,第二種是普通的純色。觀察可以得出他們對應的格式是<%ĀĀ>和<&ÿ>隨後聽說這一串神祕字元組成跟字元編碼和RGB有關,於是我用Python測試了一下,以純色字元的紫色為例:
def str_to_num(color_str): for i in color_str: print(ord(i), end=' ') print() gray = 'ĀĀÒ' str_to_num(gray) # 輸出 255 210 85 208
隨後我去查RGB為(256, 7, 210)的顏色,發現確實是紫色,帶入其他示例也都符合。因此我們可以大膽猜測這個神祕字元的確跟它的編碼值有關。
這樣是不是意味著我們可以定製顏色?
於是我們反過來,以#1F1E33(十六進位制顏色碼)舉例:
def num_to_str(color, mode):
for i in rgb_list:
print(chr(i), end='')
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(' ')))))
下次研究一下動態顏色效果的字元。