Commit 3c408b90 authored by Him188's avatar Him188

Fix GroupId.toGroupInternalId

parent d5833ced
...@@ -13,20 +13,22 @@ fun GroupId.toInternalId(): GroupInternalId { ...@@ -13,20 +13,22 @@ fun GroupId.toInternalId(): GroupInternalId {
if (this.value <= `10EXP6`) { if (this.value <= `10EXP6`) {
return GroupInternalId(this.value) return GroupInternalId(this.value)
} }
val left: Long = this.value.toString().dropLast(6).toLong() val stringValue = this.value.toString()
val right: Long = this.value.toString().takeLast(6).toLong()
fun plusLeft(leftIncrement: Int, rightLength: Int): String =
stringValue.let { (it.dropLast(rightLength).toLong() + leftIncrement).toString() + it.takeLast(rightLength) }
return GroupInternalId( return GroupInternalId(
when (left) { when (stringValue.dropLast(6).toInt()) {
in 1..10 -> ((left + 202).toString() + right.toString()).toUInt() in 1..10 -> plusLeft(202, 6)
in 11..19 -> ((left + 469).toString() + right.toString()).toUInt() in 11..19 -> plusLeft(469, 6)
in 20..66 -> ((left + 208).toString() + right.toString()).toUInt() in 20..66 -> plusLeft(208, 7)
in 67..156 -> ((left + 1943).toString() + right.toString()).toUInt() in 67..156 -> plusLeft(1943, 6)
in 157..209 -> ((left + 199).toString() + right.toString()).toUInt() in 157..209 -> plusLeft(1997, 7)
in 210..309 -> ((left + 389).toString() + right.toString()).toUInt() in 210..309 -> plusLeft(389, 7)
in 310..499 -> ((left + 349).toString() + right.toString()).toUInt() in 310..499 -> plusLeft(349, 7)
else -> this.value else -> null
} }?.toUInt() ?: this.value
) )
} }
......
...@@ -183,13 +183,13 @@ internal object PacketDebugger { ...@@ -183,13 +183,13 @@ internal object PacketDebugger {
* 7. 运行完 `mov eax,dword ptr ss:[ebp+10]` * 7. 运行完 `mov eax,dword ptr ss:[ebp+10]`
* 8. 查看内存, `eax` 到 `eax+10` 的 16 字节就是 `sessionKey` * 8. 查看内存, `eax` 到 `eax+10` 的 16 字节就是 `sessionKey`
*/ */
val sessionKey: SessionKey = SessionKey("F3 4A 4E F4 79 C4 92 62 EF 0F D8 6E D3 AB E3 80".hexToBytes()) val sessionKey: SessionKey = SessionKey("95 F3 24 8E 7B B6 62 AA 98 C0 EE 45 CE CE 2B 69".hexToBytes())
// TODO: 2019/12/7 无法访问 internal 是 kotlin bug, KT-34849 // TODO: 2019/12/7 无法访问 internal 是 kotlin bug, KT-34849
/** /**
* null 则不筛选 * null 则不筛选
*/ */
val qq: UInt? = null val qq: UInt? = 761025446u
/** /**
* 打开后则记录每一个包到文件. * 打开后则记录每一个包到文件.
*/ */
......
...@@ -4,9 +4,17 @@ import net.mamoe.mirai.test.shouldBeEqualTo ...@@ -4,9 +4,17 @@ import net.mamoe.mirai.test.shouldBeEqualTo
import org.junit.Test import org.junit.Test
import kotlin.random.Random import kotlin.random.Random
@UseExperimental(ExperimentalUnsignedTypes::class)
internal class GroupIdConversionsKtTest { internal class GroupIdConversionsKtTest {
@UseExperimental(ExperimentalUnsignedTypes::class) @Test
fun checkToInternalId() {
GroupId(221056495u).toInternalId().value shouldBeEqualTo 4111056495u
// 61 056495
//4111 056495
}
@Test @Test
fun toInternalId() { fun toInternalId() {
repeat(1000000) { _ -> repeat(1000000) { _ ->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment