fixed db operations
This commit is contained in:
50
api/gateway/tron/shared/hex.go
Normal file
50
api/gateway/tron/shared/hex.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package shared
|
||||
|
||||
import (
|
||||
"math/big"
|
||||
"strings"
|
||||
|
||||
"github.com/tech/sendico/pkg/merrors"
|
||||
)
|
||||
|
||||
var (
|
||||
errHexEmpty = merrors.InvalidArgument("hex value is empty")
|
||||
errHexInvalid = merrors.InvalidArgument("invalid hex number")
|
||||
errHexOutOfRange = merrors.InvalidArgument("hex number out of range")
|
||||
)
|
||||
|
||||
// DecodeHexBig parses a hex string that may include leading zero digits.
|
||||
func DecodeHexBig(input string) (*big.Int, error) {
|
||||
trimmed := strings.TrimSpace(input)
|
||||
if trimmed == "" {
|
||||
return nil, errHexEmpty
|
||||
}
|
||||
noPrefix := strings.TrimPrefix(trimmed, "0x")
|
||||
if noPrefix == "" {
|
||||
return nil, errHexEmpty
|
||||
}
|
||||
value := strings.TrimLeft(noPrefix, "0")
|
||||
if value == "" {
|
||||
return big.NewInt(0), nil
|
||||
}
|
||||
val := new(big.Int)
|
||||
if _, ok := val.SetString(value, 16); !ok {
|
||||
return nil, errHexInvalid
|
||||
}
|
||||
return val, nil
|
||||
}
|
||||
|
||||
// DecodeHexUint8 parses a hex string into uint8, allowing leading zeros.
|
||||
func DecodeHexUint8(input string) (uint8, error) {
|
||||
val, err := DecodeHexBig(input)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if val == nil {
|
||||
return 0, errHexInvalid
|
||||
}
|
||||
if val.BitLen() > 8 {
|
||||
return 0, errHexOutOfRange
|
||||
}
|
||||
return uint8(val.Uint64()), nil
|
||||
}
|
||||
Reference in New Issue
Block a user