Files
2025-08-01 01:23:42 +00:00

45 lines
1.0 KiB
Go

// Copyright (C) 2019-2025, Lux Industries, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package utils
import "github.com/luxfi/geth/common"
// IncrOne increments bytes value by one
func IncrOne(bytes []byte) {
index := len(bytes) - 1
for index >= 0 {
if bytes[index] < 255 {
bytes[index]++
break
} else {
bytes[index] = 0
index--
}
}
}
// HashSliceToBytes serializes a []common.Hash into a tightly packed byte array.
func HashSliceToBytes(hashes []common.Hash) []byte {
bytes := make([]byte, common.HashLength*len(hashes))
for i, hash := range hashes {
copy(bytes[i*common.HashLength:], hash[:])
}
return bytes
}
// BytesToHashSlice packs [b] into a slice of hash values with zero padding
// to the right if the length of b is not a multiple of 32.
func BytesToHashSlice(b []byte) []common.Hash {
var (
numHashes = (len(b) + 31) / 32
hashes = make([]common.Hash, numHashes)
)
for i := range hashes {
start := i * common.HashLength
copy(hashes[i][:], b[start:])
}
return hashes
}