Added better data parser
This commit is contained in:
		| @@ -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") | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user