aboutsummaryrefslogtreecommitdiffstats
path: root/ethutil/bytes.go
diff options
context:
space:
mode:
Diffstat (limited to 'ethutil/bytes.go')
-rw-r--r--ethutil/bytes.go28
1 files changed, 27 insertions, 1 deletions
diff --git a/ethutil/bytes.go b/ethutil/bytes.go
index 40903a5f1..b298675a2 100644
--- a/ethutil/bytes.go
+++ b/ethutil/bytes.go
@@ -6,6 +6,9 @@ import (
"fmt"
)
+// Number to bytes
+//
+// Returns the number in bytes with the specified base
func NumberToBytes(num interface{}, bits int) []byte {
buf := new(bytes.Buffer)
err := binary.Write(buf, binary.BigEndian, num)
@@ -16,6 +19,9 @@ func NumberToBytes(num interface{}, bits int) []byte {
return buf.Bytes()[buf.Len()-(bits/8):]
}
+// Bytes to number
+//
+// Attempts to cast a byte slice to a unsigned integer
func BytesToNumber(b []byte) uint64 {
var number uint64
@@ -32,7 +38,9 @@ func BytesToNumber(b []byte) uint64 {
return number
}
-// Read variable integer in big endian
+// Read variable int
+//
+// Read a variable length number in big endian byte order
func ReadVarint(reader *bytes.Reader) (ret uint64) {
if reader.Len() == 8 {
var num uint64
@@ -55,6 +63,9 @@ func ReadVarint(reader *bytes.Reader) (ret uint64) {
return ret
}
+// Binary length
+//
+// Returns the true binary length of the given number
func BinaryLength(num int) int {
if num == 0 {
return 0
@@ -62,3 +73,18 @@ func BinaryLength(num int) int {
return 1 + BinaryLength(num>>8)
}
+
+// Copy bytes
+//
+// Returns an exact copy of the provided bytes
+func CopyBytes(b []byte) (copiedBytes []byte) {
+ copiedBytes = make([]byte, len(b))
+ copy(copiedBytes, b)
+
+ return
+}
+
+func IsHex(str string) bool {
+ l := len(str)
+ return l >= 4 && l%2 == 0 && str[0:2] == "0x"
+}