From 4e47281e7dad1d161a04fd6f414142ebd9385987 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Thu, 22 Jun 2023 14:35:22 +0800 Subject: [PATCH] =?UTF-8?q?mod:=20avbv=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/search/controller.dart | 1 + lib/utils/id_utils.dart | 47 ++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 lib/utils/id_utils.dart diff --git a/lib/pages/search/controller.dart b/lib/pages/search/controller.dart index 7c6e49768..7e4e07724 100644 --- a/lib/pages/search/controller.dart +++ b/lib/pages/search/controller.dart @@ -5,6 +5,7 @@ import 'package:hive/hive.dart'; import 'package:pilipala/http/search.dart'; import 'package:pilipala/models/search/hot.dart'; import 'package:pilipala/models/search/suggest.dart'; +import 'package:pilipala/utils/id_utils.dart'; import 'package:pilipala/utils/storage.dart'; class SearchController extends GetxController { diff --git a/lib/utils/id_utils.dart b/lib/utils/id_utils.dart new file mode 100644 index 000000000..cc9c4a03e --- /dev/null +++ b/lib/utils/id_utils.dart @@ -0,0 +1,47 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +class IdUtils { + static const String TABLE = + 'fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF'; + static const List S = [11, 10, 3, 8, 4, 6]; // 位置编码表 + static const int XOR = 177451812; // 固定异或值 + static const int ADD = 8728348608; // 固定加法值 + static const List r = [ + 'B', + 'V', + '1', + '', + '', + '4', + '', + '1', + '', + '7', + '', + '' + ]; + + /// av转bv + static String av2bv(int av) { + int x_ = (av ^ XOR) + ADD; + List newR = []; + newR.addAll(r); + for (int i = 0; i < S.length; i++) { + newR[S[i]] = + TABLE.characters.elementAt((x_ / pow(58, i).toInt() % 58).toInt()); + } + return newR.join(); + } + + /// bv转bv + static int bv2av(String bv) { + int r = 0; + for (int i = 0; i < S.length; i++) { + r += (TABLE.indexOf(bv.characters.elementAt(S[i])).toInt()) * + pow(58, i).toInt(); + } + return (r - ADD) ^ XOR; + } +}