game_sync/common/intconvert.go

79 lines
1.6 KiB
Go

package common
import (
"math"
)
/*
整型安全转换
*/
const (
// MaxInt32 int32最大值
MaxInt32 int32 = math.MaxInt32
// MinInt32 int32最小值
MinInt32 = math.MinInt32
)
const (
// MaxUInt32 uint32最大值
MaxUInt32 uint32 = math.MaxUint32
)
const (
// MaxInt64 int64最大值
MaxInt64 int64 = math.MaxInt64
// MinInt64 int64最小值
MinInt64 = math.MinInt64
)
const (
// MaxUInt64 uint64最大值
MaxUInt64 uint64 = math.MaxUint64
)
// MakeU64 将两个uint32拼凑为uint64 lo为低字节 hi为高字节
func MakeU64(lo, hi uint32) uint64 {
return uint64(hi)<<32 | uint64(lo)
}
// LowU32 返回uint64低字节(后uint32)
func LowU32(n uint64) uint32 {
return uint32(n & 0xffffffff)
}
// HighU32 返回uint64高字节(前uint32)
func HighU32(n uint64) uint32 {
return uint32(n >> 32)
}
// LowAndHighUI32 分别返回uint64低字节,高字节
func LowAndHighUI32(n uint64) (uint32, uint32) {
return uint32(n & 0xffffffff), uint32(n >> 32)
}
// MakeI64 将两个int32拼凑为int64 lo为低字节 hi为高字节
func MakeI64(lo, hi int32) int64 {
return int64(hi)<<32 | int64(lo)
}
// LowI32 返回int64低字节(后int32)
func LowI32(n int64) int32 {
return int32(n & 0xffffffff)
}
// HighI32 返回int64高字节(前int32)
func HighI32(n int64) int32 {
return int32(n >> 32)
}
// LowAndHighI32 分别返回int64低字节,高字节
func LowAndHighI32(n int64) (int32, int32) {
return int32(n & 0xffffffff), int32(n >> 32)
}
// LowAndHighI32 分别返回int64低字节,高字节
func LowAndHighI64(n int64) (int64, int64) {
return n & 0xffffffff, n >> 32
}