forked from cerc-io/plugeth
common/hexutil: fix EncodeBig, Big.MarshalJSON
The code was too clever and failed to include zeros on a big.Word boundary.
This commit is contained in:
parent
01f6f2d741
commit
51f6b6d33f
@ -169,12 +169,7 @@ func EncodeBig(bigint *big.Int) string {
|
|||||||
if nbits == 0 {
|
if nbits == 0 {
|
||||||
return "0x0"
|
return "0x0"
|
||||||
}
|
}
|
||||||
enc := make([]byte, 2, (nbits/8)*2+2)
|
return fmt.Sprintf("0x%x", bigint)
|
||||||
copy(enc, "0x")
|
|
||||||
for i := len(bigint.Bits()) - 1; i >= 0; i-- {
|
|
||||||
enc = strconv.AppendUint(enc, uint64(bigint.Bits()[i]), 16)
|
|
||||||
}
|
|
||||||
return string(enc)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func has0xPrefix(input string) bool {
|
func has0xPrefix(input string) bool {
|
||||||
|
@ -46,6 +46,7 @@ var (
|
|||||||
{referenceBig("1"), "0x1"},
|
{referenceBig("1"), "0x1"},
|
||||||
{referenceBig("ff"), "0xff"},
|
{referenceBig("ff"), "0xff"},
|
||||||
{referenceBig("112233445566778899aabbccddeeff"), "0x112233445566778899aabbccddeeff"},
|
{referenceBig("112233445566778899aabbccddeeff"), "0x112233445566778899aabbccddeeff"},
|
||||||
|
{referenceBig("80a7f2c1bcc396c00"), "0x80a7f2c1bcc396c00"},
|
||||||
}
|
}
|
||||||
|
|
||||||
encodeUint64Tests = []marshalTest{
|
encodeUint64Tests = []marshalTest{
|
||||||
|
@ -109,13 +109,8 @@ func (b *Big) MarshalJSON() ([]byte, error) {
|
|||||||
if nbits == 0 {
|
if nbits == 0 {
|
||||||
return jsonZero, nil
|
return jsonZero, nil
|
||||||
}
|
}
|
||||||
enc := make([]byte, 3, (nbits/8)*2+4)
|
enc := fmt.Sprintf(`"0x%x"`, bigint)
|
||||||
copy(enc, `"0x`)
|
return []byte(enc), nil
|
||||||
for i := len(bigint.Bits()) - 1; i >= 0; i-- {
|
|
||||||
enc = strconv.AppendUint(enc, uint64(bigint.Bits()[i]), 16)
|
|
||||||
}
|
|
||||||
enc = append(enc, '"')
|
|
||||||
return enc, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnmarshalJSON implements json.Unmarshaler.
|
// UnmarshalJSON implements json.Unmarshaler.
|
||||||
|
Loading…
Reference in New Issue
Block a user