diff options
author | obscuren <geffobscura@gmail.com> | 2014-07-30 19:06:59 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-07-30 19:06:59 +0800 |
commit | 5a2d62e4d9e551f16f094216da70b7a6f5d2bf00 (patch) | |
tree | 4cd169d6d7e4a918558a53f39747a5f726e1eb30 /ethutil | |
parent | 42d47ecfb09ac0b419db5722602d9b02e21f2457 (diff) | |
download | go-tangerine-5a2d62e4d9e551f16f094216da70b7a6f5d2bf00.tar.gz go-tangerine-5a2d62e4d9e551f16f094216da70b7a6f5d2bf00.tar.zst go-tangerine-5a2d62e4d9e551f16f094216da70b7a6f5d2bf00.zip |
Added better data parser
Diffstat (limited to 'ethutil')
-rw-r--r-- | ethutil/bytes.go | 20 | ||||
-rw-r--r-- | ethutil/bytes_test.go | 14 |
2 files changed, 34 insertions, 0 deletions
diff --git a/ethutil/bytes.go b/ethutil/bytes.go index 4027e3986..49fc229d3 100644 --- a/ethutil/bytes.go +++ b/ethutil/bytes.go @@ -131,6 +131,26 @@ func FormatData(data string) []byte { return BigToBytes(d, 256) } +func ParseData(data ...interface{}) (ret []byte) { + for _, item := range data { + switch t := item.(type) { + case string: + var str []byte + if IsHex(t) { + str = Hex2Bytes(t[2:]) + } else { + str = []byte(t) + } + + ret = append(ret, RightPadBytes(str, 32)...) + case []byte: + ret = append(ret, LeftPadBytes(t, 32)...) + } + } + + return +} + func RightPadBytes(slice []byte, l int) []byte { if l < len(slice) { return slice diff --git a/ethutil/bytes_test.go b/ethutil/bytes_test.go new file mode 100644 index 000000000..381efe7a2 --- /dev/null +++ b/ethutil/bytes_test.go @@ -0,0 +1,14 @@ +package ethutil + +import ( + "bytes" + "testing" +) + +func TestParseData(t *testing.T) { + data := ParseData("hello", "world", "0x0106") + exp := "68656c6c6f000000000000000000000000000000000000000000000000000000776f726c640000000000000000000000000000000000000000000000000000000106000000000000000000000000000000000000000000000000000000000000" + if bytes.Compare(data, Hex2Bytes(exp)) != 0 { + t.Error("Error parsing data") + } +} |