切噜语介绍

切噜语

ちぇるーん♪
ちぇるちぇる、ちぇちぇるぱ、ちぇるるるん!
ちぇらるれ、ちぇらちぇら、ちぇるちぇぽぱぴ?

千爱瑠在剧情中所使用的一种不明所以的表达方式,其基本形态为千爱瑠的口头禅“切噜ちぇるーん”,详见“风间千爱瑠”。

来源于萌娘百科

编码介绍

将汉字的UTF-8编码的前4位和后4位,分别对应16位长度的字符集中位置,拿到对应的字符重新编码成的一种加密语言。
qieru

代码实现

编码:

1
2
3
4
5
6
7
8
9
10
val QIERU =
arrayOf("切", "卟", "叮", "咧", "哔", "唎", "啪", "啰", "啵", "嘭", "噜", "噼", "巴", "拉", "蹦", "铃")
var qstr: String = ""
//编码 encode
val str = "七宝".toByteArray()
str.forEach { it ->
qstr += QIERU[it.toInt().and(15)]
qstr += QIERU[it.toInt().shr(4).and(15)]
}
println(qstr) //哔蹦波噼咧波喇蹦蹦噜拉嘭

解码:

1
2
3
4
5
6
7
8
9
10
11
val QIERU =
arrayOf("切", "卟", "叮", "咧", "哔", "唎", "啪", "啰", "啵", "嘭", "噜", "噼", "巴", "拉", "蹦", "铃")
val qstr = "哔蹦波噼咧波喇蹦蹦噜拉嘭"
var pstr: ByteArray = ByteArray(qstr.length / 2)
//解码时两个编码为一组
for (i in 0 until qstr.length step 2) {
println("index: ${i / 2},element1: ${qstr[i]},element2: ${qstr[i + 1]}")
pstr[i / 2] = QIERU.indexOf(qstr[i].toString()).or(QIERU.indexOf(qstr[i + 1].toString()).shl(4)).toByte()
}
val s = pstr.toString(Charsets.UTF_8)
println(s) //七宝

Java版

1
//回去翻数据库

基于狼宝机器人的实际应用

通过两个关键词来判定是否触发相应功能。

编码:“切噜一下[内容]”

1
2
3
4
5
6
7
8
9
10
11
msg.startsWith("切噜一下") -> {
val QIERU =
arrayOf("切", "卟", "叮", "咧", "哔", "唎", "啪", "啰", "啵", "嘭", "噜", "噼", "巴", "拉", "蹦", "铃")
val qieru = msg.substring(4,msg.length).replace(" ","")
var encode: String = "切噜~♪切"
qieru.toByteArray().forEach {
encode += QIERU[it.toInt().and(15)]
encode += QIERU[it.toInt().shr(4).and(15)]
}
this.group.sendMessage(encode)
}

解码:切噜~♪切

1
2
3
4
5
6
7
8
9
10
11
12
msg.startsWith("切噜~♪切") -> {
val QIERU =
arrayOf("切", "卟", "叮", "咧", "哔", "唎", "啪", "啰", "啵", "嘭", "噜", "噼", "巴", "拉", "蹦", "铃")
val qieru = msg.substring(5,msg.length).replace(" ","")
//todo 判断包含符号报错
var decode: ByteArray = ByteArray(qieru.length / 2)
for (i in 0 until qieru.length step 2) {
decode[i / 2] = QIERU.indexOf(qieru[i].toString()).or(QIERU.indexOf(qieru[i + 1].toString()).shl(4)).toByte()
}
val s = decode.toString(Charsets.UTF_8)
this.group.sendMessage(s)
}

结语

结束,下一篇