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)
|
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 {
|
func RightPadBytes(slice []byte, l int) []byte {
|
||||||
if l < len(slice) {
|
if l < len(slice) {
|
||||||
return 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