From b730d54499cd3036f28479593ecaa81d569f6e39 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Sat, 29 Jul 2023 09:34:51 +0800 Subject: [PATCH] =?UTF-8?q?recessive:=20=E4=BF=AE=E6=94=B9=20MergeInt64=20?= =?UTF-8?q?=E4=B8=BA=E6=B3=9B=E5=9E=8B=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/maths/math.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/utils/maths/math.go b/utils/maths/math.go index e0ccf10..7312daf 100644 --- a/utils/maths/math.go +++ b/utils/maths/math.go @@ -124,17 +124,18 @@ func UnMerge[V generic.SignedNumber](refer, num V) (a, b V) { return a, b } -// MergeInt64 将两个 int64 数字合并为一个 int64 数字 -func MergeInt64(a int64, b int64) int64 { +// MergeToInt64 将两个数字合并为一个 int64 数字 +func MergeToInt64[V generic.SignedNumber](v1 V, v2 V) int64 { + a, b := int64(v1), int64(v2) mergedNumber := (a << 32) | (b & 0xFFFFFFFF) return mergedNumber } -// UnMergeInt64 将一个 int64 数字拆分为两个 int64 数字 -func UnMergeInt64(n int64) (int64, int64) { +// UnMergeInt64 将一个 int64 数字拆分为两个数字 +func UnMergeInt64[V generic.SignedNumber](n int64) (V, V) { a := n >> 32 b := n & 0xFFFFFFFF - return a, b + return V(a), V(b) } // ToContinuous 将一组非连续的数字转换为从1开始的连续数字