41 lines
938 B
Go
41 lines
938 B
Go
package encoding
|
|
|
|
import (
|
|
"math"
|
|
|
|
"github.com/shamaton/msgpack/v2/def"
|
|
)
|
|
|
|
func (e *encoder) calcUint(v uint64) int {
|
|
if v <= math.MaxInt8 {
|
|
// format code only
|
|
return 0
|
|
} else if v <= math.MaxUint8 {
|
|
return def.Byte1
|
|
} else if v <= math.MaxUint16 {
|
|
return def.Byte2
|
|
} else if v <= math.MaxUint32 {
|
|
return def.Byte4
|
|
}
|
|
return def.Byte8
|
|
}
|
|
|
|
func (e *encoder) writeUint(v uint64, offset int) int {
|
|
if v <= math.MaxInt8 {
|
|
offset = e.setByte1Uint64(v, offset)
|
|
} else if v <= math.MaxUint8 {
|
|
offset = e.setByte1Int(def.Uint8, offset)
|
|
offset = e.setByte1Uint64(v, offset)
|
|
} else if v <= math.MaxUint16 {
|
|
offset = e.setByte1Int(def.Uint16, offset)
|
|
offset = e.setByte2Uint64(v, offset)
|
|
} else if v <= math.MaxUint32 {
|
|
offset = e.setByte1Int(def.Uint32, offset)
|
|
offset = e.setByte4Uint64(v, offset)
|
|
} else {
|
|
offset = e.setByte1Int(def.Uint64, offset)
|
|
offset = e.setByte8Uint64(v, offset)
|
|
}
|
|
return offset
|
|
}
|