aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-01-16 17:49:18 +0800
committerGitHub <noreply@github.com>2017-01-16 17:49:17 +0800
commit2a1a531ba339516a0a8d0abc0e94a30842bb2fd2 (patch)
treec66639a59702e70e7a67d08c62b2081395bcefc8
parentb5a100b859213dbb7d4545ce53dabab398b4191e (diff)
parent51f6b6d33f5b50e16f0b04bcccd03ad370f36636 (diff)
downloadgo-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.go7
-rw-r--r--common/hexutil/hexutil_test.go1
-rw-r--r--common/hexutil/json.go9
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.