diff --git a/bin.go b/bin.go index 75bb352..4caab14 100644 --- a/bin.go +++ b/bin.go @@ -1536,3 +1536,17 @@ func Uint64AsInt64(u uint64) int64 { i, _ := GetInt64(arr, LH) return i } + +// FLAGS + +func IsSetFlag(flags byte, flag byte) bool { + return (flags & flag) == flag +} + +func SetFlag(flags byte, flag byte) byte { + return flags | flag +} + +func UnsetFlag(flags byte, flag byte) byte { + return flags & ^flag +} diff --git a/bin_test.go b/bin_test.go index 61a7ad0..9f8c052 100644 --- a/bin_test.go +++ b/bin_test.go @@ -703,3 +703,15 @@ func TestVarSize(t *testing.T) { buf.Reset() } } + +// func TestSetUnsetFlag(t *testing.T) { +// var ( +// flag byte = 2 +// flags byte = flag +// ) + +// flags &= ^flag + +// fmt.Printf("%b\n", ^flag) +// fmt.Printf("%b\n", UnsetFlag(flags, flag)) +// }