forked from cerc-io/plugeth
Added better data parser
This commit is contained in:
parent
42d47ecfb0
commit
5a2d62e4d9
@ -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
14
ethutil/bytes_test.go
Normal 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")
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user