hexutil

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 14, 2019 License: LGPL-3.0 Imports: 8 Imported by: 0

Documentation

Overview

Package hexutil implements hex encoding with 0x prefix. This encoding is used by the Lemochain RPC API to transport binary data in JSON payloads.

Encoding Rules

All hex data must have prefix "0x".

For byte slices, the hex data must be of even length. An empty byte slice encodes as "0x".

Integers are encoded using the least amount of digits (no leading zero digits). Their encoding may be of uneven length. The number zero encodes as "0x0".

Index

Examples

Constants

This section is empty.

Variables

View Source
var (
	ErrEmptyString   = &decError{"empty hex string"}
	ErrSyntax        = &decError{"invalid hex string"}
	ErrMissingPrefix = &decError{"hex string without 0x prefix"}
	ErrOddLength     = &decError{"hex string of odd length"}
	ErrEmptyNumber   = &decError{"hex string \"0x\""}
	ErrRange         = &decError{"number is out of range"}
	Err256Range      = &decError{"hex number > 256 bits"}
)
View Source
var (
	IPT = reflect.TypeOf(IP(nil))
)

Functions

func Decode

func Decode(input string) ([]byte, error)

Decode decodes a hex string with 0x prefix.

func Encode

func Encode(b []byte) string

Encode encodes b as a hex string with 0x prefix.

func MustDecode

func MustDecode(input string) []byte

MustDecode decodes a hex string with 0x prefix. It panics for invalid input.

func MustParseUint64

func MustParseUint64(s string) uint64

MustParseUint64 parses s as an integer and panics if the string is invalid.

func ParseUint

func ParseUint(s string, bitSize int) (uint64, error)

ParseUint64 parses s as an integer in decimal or hexadecimal syntax. Leading zeros are accepted. The empty string parses as zero.

func UnmarshalFixedJSON

func UnmarshalFixedJSON(typ reflect.Type, input, out []byte) error

UnmarshalFixedJSON decodes the input as a string with 0x prefix. The length of out determines the required input length. This function is commonly used to implement the UnmarshalJSON method for fixed-size types.

func UnmarshalFixedText

func UnmarshalFixedText(typname string, input, out []byte, want0xPrefix bool) error

UnmarshalFixedText decodes the input as a string. The length of out determines the required input length. This function is commonly used to implement the UnmarshalText method for fixed-size types.

Example
package main

import (
	"encoding/json"
	"fmt"

	"github.com/LemoFoundationLtd/lemochain-core/common/hexutil"
)

type MyType [5]byte

func (v *MyType) UnmarshalText(input []byte) error {
	return hexutil.UnmarshalFixedText("MyType", input, v[:], true)
}

func (v MyType) String() string {
	return hexutil.Bytes(v[:]).String()
}

func main() {
	var v1, v2 MyType
	fmt.Println("v1 error:", json.Unmarshal([]byte(`"0x01"`), &v1))
	fmt.Println("v2 error:", json.Unmarshal([]byte(`"0x0101010101"`), &v2))
	fmt.Println("v2:", v2)
}
Output:

v1 error: hex string has length 2, want 10 for MyType
v2 error: <nil>
v2: 0x0101010101

Types

type Big

type Big big.Int

Big marshals/unmarshals as a JSON string with 0x prefix. The zero value marshals as "0x0".

Negative integers are not supported at this time. Attempting to marshal them will return an error. Values larger than 256bits are rejected by Unmarshal but will be marshaled without error.

func (Big) MarshalText

func (b Big) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler

func (*Big) String

func (b *Big) String() string

String returns the hex encoding of b.

func (*Big) ToInt

func (b *Big) ToInt() *big.Int

ToInt converts b to a big.Int.

func (*Big) UnmarshalJSON

func (b *Big) UnmarshalJSON(input []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*Big) UnmarshalText

func (b *Big) UnmarshalText(input []byte) error

UnmarshalText implements encoding.TextUnmarshaler

type Big10

type Big10 big.Int

Big10 marshals/unmarshals as a JSON decimal string. The zero value marshals as "0".

Negative integers are not supported at this time. Attempting to marshal them will return an error. Values larger than 256bits are rejected by Unmarshal but will be marshaled without error.

func (Big10) MarshalText

func (b Big10) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler

func (*Big10) String

func (b *Big10) String() string

String returns the hex encoding of b.

func (*Big10) ToInt

func (b *Big10) ToInt() *big.Int

ToInt converts b to a big.Int.

func (*Big10) UnmarshalJSON

func (b *Big10) UnmarshalJSON(input []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*Big10) UnmarshalText

func (b *Big10) UnmarshalText(input []byte) error

UnmarshalText implements encoding.TextUnmarshaler

type Bytes

type Bytes []byte

Bytes marshals/unmarshals as a JSON string with 0x prefix. The empty slice marshals as "0x".

func (Bytes) MarshalText

func (b Bytes) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler

func (Bytes) String

func (b Bytes) String() string

String returns the hex encoding of b.

func (*Bytes) UnmarshalJSON

func (b *Bytes) UnmarshalJSON(input []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*Bytes) UnmarshalText

func (b *Bytes) UnmarshalText(input []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

type IP

type IP net.IP

func (*IP) MarshalText

func (ip *IP) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler.

func (*IP) String

func (ip *IP) String() string

func (*IP) UnmarshalJSON

func (ip *IP) UnmarshalJSON(input []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*IP) UnmarshalText

func (ip *IP) UnmarshalText(input []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

type Uint16 added in v1.2.0

type Uint16 uint16

Uint16 marshals uint16 as decimal, and unmarshals string and number as decimal or hex.

func (Uint16) MarshalText added in v1.2.0

func (i Uint16) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler.

func (*Uint16) UnmarshalJSON added in v1.2.0

func (i *Uint16) UnmarshalJSON(input []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*Uint16) UnmarshalText added in v1.2.0

func (i *Uint16) UnmarshalText(input []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

type Uint32

type Uint32 uint32

Uint32 marshals uint32 as decimal, and unmarshals string and number as decimal or hex.

func (Uint32) MarshalText

func (i Uint32) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler.

func (*Uint32) UnmarshalJSON

func (i *Uint32) UnmarshalJSON(input []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*Uint32) UnmarshalText

func (i *Uint32) UnmarshalText(input []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

type Uint64

type Uint64 uint64

Uint64 marshals uint64 as decimal, and unmarshals string and number as decimal or hex.

func (Uint64) MarshalText

func (i Uint64) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler.

func (*Uint64) UnmarshalJSON

func (i *Uint64) UnmarshalJSON(input []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*Uint64) UnmarshalText

func (i *Uint64) UnmarshalText(input []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

type Uint8 added in v1.2.0

type Uint8 uint8

Uint8 marshals uint16 as decimal, and unmarshals string and number as decimal or hex.

func (Uint8) MarshalText added in v1.2.0

func (i Uint8) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler.

func (*Uint8) UnmarshalJSON added in v1.2.0

func (i *Uint8) UnmarshalJSON(input []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*Uint8) UnmarshalText added in v1.2.0

func (i *Uint8) UnmarshalText(input []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL