package util import ( "bytes" "encoding/binary" "encoding/hex" "fmt" ) // Uint256 ... type Uint256 [32]uint8 // Uint256FromBytes return an Uint256 from a byte slice. func Uint256FromBytes(b []byte) Uint256 { if len(b) != 32 { err := fmt.Sprintf("%d does not match the size of Uint256 (32 bytes)", len(b)) panic(err) } var val [32]uint8 for i := 0; i < 32; i++ { val[i] = b[i] } return Uint256(val) } // UnmarshalBinary implements the Binary Unmarshaler interface. func (u *Uint256) UnmarshalBinary(b []byte) error { r := bytes.NewReader(b) binary.Read(r, binary.LittleEndian, u) return nil } // ToSlice return a byte slice of u. func (u Uint256) ToSlice() []byte { b := make([]byte, 32) for i := 0; i < 32; i++ { b[i] = byte(u[i]) } return b } func (u Uint256) String() string { return hex.EncodeToString(u.ToSlice()) }