added CountVarUint64, CountVarUint32, CountVarSize

This commit is contained in:
2025-11-01 16:16:20 +00:00
parent 142699e328
commit 7fa2d0f292
2 changed files with 151 additions and 15 deletions

View File

@@ -996,6 +996,24 @@ func ReadVarUint64(src io.Reader) (num uint64, err error) {
return
}
func WriteBool(w io.Writer, flag bool) (err error) {
var b byte
if flag {
b = 1
}
_, err = w.Write([]byte{b})
return
}
func ReadBool(src io.Reader) (bool, error) {
b, err := ReadByte(src)
if err != nil {
return false, err
}
return b == 1, nil
}
// uint64
func WriteVarSize(w io.Writer, n int) (int, error) {
num := uint64(n)
a := make([]byte, 9)
@@ -1013,15 +1031,6 @@ func WriteVarSize(w io.Writer, n int) (int, error) {
return w.Write(a)
}
func WriteBool(w io.Writer, flag bool) (err error) {
var b byte
if flag {
b = 1
}
_, err = w.Write([]byte{b})
return
}
func ReadVarSize(src io.Reader) (_ int, err error) {
var (
b byte
@@ -1047,10 +1056,47 @@ func ReadVarSize(src io.Reader) (_ int, err error) {
return int(num), nil
}
func ReadBool(src io.Reader) (bool, error) {
b, err := ReadByte(src)
if err != nil {
return false, err
}
return b == 1, nil
var varUint32Cutoffs = []uint32{
1 << 7,
1 << 14,
1 << 21,
1 << 28,
}
func CountVarUint32(n uint32) int {
for i, cutoff := range varUint32Cutoffs {
if n < cutoff {
return i + 1
}
}
return 5
}
var varUint64Cutoffs = []uint64{
1 << 7,
1 << 14,
1 << 21,
1 << 28,
1 << 35,
1 << 42,
1 << 49,
1 << 56,
}
func CountVarUint64(n uint64) int {
for i, cutoff := range varUint64Cutoffs {
if n < cutoff {
return i + 1
}
}
return 9
}
func CountVarSize(n int) int {
u64 := uint64(n)
for i, cutoff := range varUint64Cutoffs {
if u64 < cutoff {
return i + 1
}
}
return 9
}