起因是,某天逛群看到了加在群名片前可以改变颜色的神秘字符,类似于
<%ĀĀÒ>高级灰
<&ÿÒ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(' ')))))
说了那么多其实就是无聊。