Add HasBitFlag, SetBitFlag, UnSetBitFlag

This commit is contained in:
殷勇 2023-08-25 16:17:22 +08:00
parent 8716d301c6
commit 9823133648

View File

@ -1,18 +1,18 @@
package q5
import (
"os"
"net"
"fmt"
"net/http"
"time"
"io/ioutil"
"reflect"
"encoding/json"
"fmt"
"io/ioutil"
"net"
"net/http"
"os"
"reflect"
"time"
)
func GetDaySeconds(seconds int64, timeZone int64) int64 {
return ((seconds + timeZone * 3600)/3600/24 + 1) * 3600 * 24 - 3600 * timeZone;
return ((seconds+timeZone*3600)/3600/24+1)*3600*24 - 3600*timeZone
}
func GetTickCount() int64 {
@ -130,3 +130,29 @@ func FormatUnixDateEx(sec int64) string {
strTime := time.Unix(sec, 0).Format("20060102")
return strTime
}
const (
maxBitNum = 63 // 最大的有效位号,根据 int64 的位宽确定
)
func HasBitFlag(val int64, bitNum int32) bool {
if bitNum < 0 || bitNum > maxBitNum {
return false
}
mask := int64(1) << bitNum
return (val & mask) != 0
}
func SetBitFlag(val *int64, bitNum int32) {
if bitNum < 0 || bitNum > maxBitNum {
return
}
*val |= int64(1) << bitNum
}
func UnSetBitFlag(val *int64, bitNum int32) {
if bitNum < 0 || bitNum > maxBitNum {
return
}
*val &= ^(int64(1) << bitNum)
}