1. 程式人生 > 其它 >QQ群名片顏色程式碼的研究

QQ群名片顏色程式碼的研究

起因是,某天逛群看到了加在群名片前可以改變顏色的神祕字元,類似於
<%ĀĀÒ>高階灰
<&ÿÒ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(' ')))))

下次研究一下動態顏色效果的字元。