Added better data parser

This commit is contained in:
obscuren 2014-07-30 13:06:59 +02:00
parent 42d47ecfb0
commit 5a2d62e4d9
2 changed files with 34 additions and 0 deletions

View File

@ -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

14
ethutil/bytes_test.go Normal file
View File

@ -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")
}
}