diff options
author | Péter Szilágyi <peterke@gmail.com> | 2017-01-16 17:49:18 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-16 17:49:17 +0800 |
commit | 2a1a531ba339516a0a8d0abc0e94a30842bb2fd2 (patch) | |
tree | c66639a59702e70e7a67d08c62b2081395bcefc8 | |
parent | b5a100b859213dbb7d4545ce53dabab398b4191e (diff) | |
parent | 51f6b6d33f5b50e16f0b04bcccd03ad370f36636 (diff) | |
download | go-tangerine-2a1a531ba339516a0a8d0abc0e94a30842bb2fd2.tar.gz go-tangerine-2a1a531ba339516a0a8d0abc0e94a30842bb2fd2.tar.zst go-tangerine-2a1a531ba339516a0a8d0abc0e94a30842bb2fd2.zip |
Merge pull request #3570 from fjl/hexutil-zero-fix
common/hexutil: fix EncodeBig, Big.MarshalJSON
-rw-r--r-- | common/hexutil/hexutil.go | 7 | ||||
-rw-r--r-- | common/hexutil/hexutil_test.go | 1 | ||||
-rw-r--r-- | common/hexutil/json.go | 9 |
3 files changed, 4 insertions, 13 deletions
diff --git a/common/hexutil/hexutil.go b/common/hexutil/hexutil.go index 29e6de333..4ec0ee8e6 100644 --- a/common/hexutil/hexutil.go +++ b/common/hexutil/hexutil.go @@ -169,12 +169,7 @@ func EncodeBig(bigint *big.Int) string { if nbits == 0 { return "0x0" } - enc := make([]byte, 2, (nbits/8)*2+2) - copy(enc, "0x") - for i := len(bigint.Bits()) - 1; i >= 0; i-- { - enc = strconv.AppendUint(enc, uint64(bigint.Bits()[i]), 16) - } - return string(enc) + return fmt.Sprintf("0x%x", bigint) } func has0xPrefix(input string) bool { diff --git a/common/hexutil/hexutil_test.go b/common/hexutil/hexutil_test.go index b58b4745c..324e9d348 100644 --- a/common/hexutil/hexutil_test.go +++ b/common/hexutil/hexutil_test.go @@ -46,6 +46,7 @@ var ( {referenceBig("1"), "0x1"}, {referenceBig("ff"), "0xff"}, {referenceBig("112233445566778899aabbccddeeff"), "0x112233445566778899aabbccddeeff"}, + {referenceBig("80a7f2c1bcc396c00"), "0x80a7f2c1bcc396c00"}, } encodeUint64Tests = []marshalTest{ diff --git a/common/hexutil/json.go b/common/hexutil/json.go index c36d862b5..7e4736dd6 100644 --- a/common/hexutil/json.go +++ b/common/hexutil/json.go @@ -109,13 +109,8 @@ func (b *Big) MarshalJSON() ([]byte, error) { if nbits == 0 { return jsonZero, nil } - enc := make([]byte, 3, (nbits/8)*2+4) - copy(enc, `"0x`) - for i := len(bigint.Bits()) - 1; i >= 0; i-- { - enc = strconv.AppendUint(enc, uint64(bigint.Bits()[i]), 16) - } - enc = append(enc, '"') - return enc, nil + enc := fmt.Sprintf(`"0x%x"`, bigint) + return []byte(enc), nil } // UnmarshalJSON implements json.Unmarshaler. |