From 28ef7d228c4e8e24315eb585e4e0d03a4c652ccb Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 1 Jul 2014 20:08:48 +0200 Subject: [PATCH] Added Left and Right padding utility functions --- ethutil/bytes.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/ethutil/bytes.go b/ethutil/bytes.go index c2817946bf..5737a75c9e 100644 --- a/ethutil/bytes.go +++ b/ethutil/bytes.go @@ -118,7 +118,8 @@ func FormatData(data string) []byte { // Simple stupid d := new(big.Int) if data[0:1] == "\"" && data[len(data)-1:] == "\"" { - d.SetBytes([]byte(data[1 : len(data)-1])) + return RightPadBytes([]byte(data), 32) + //d.SetBytes([]byte(data[1 : len(data)-1])) } else if len(data) > 1 && data[:2] == "0x" { d.SetBytes(Hex2Bytes(data[2:])) } else { @@ -127,3 +128,25 @@ func FormatData(data string) []byte { return BigToBytes(d, 256) } + +func LeftPadBytes(slice []byte, l int) []byte { + if l <= len(slice) { + return slice + } + + padded := make([]byte, l) + copy(padded[0:len(slice)], slice) + + return padded +} + +func RightPadBytes(slice []byte, l int) []byte { + if l <= len(slice) { + return slice + } + + padded := make([]byte, l) + copy(padded[l-len(slice):], slice) + + return padded +}