79 lines
1.6 KiB
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
|
|
}
|