Improve ShaHash.String comment and implementation.
The hash is not displayed big endian, but rather as a byte-reversed hash as a hexidecimal string, so document it as such. While here, speed up the function. Some benchmarks: BenchmarkShaHashString 2000000 996 ns/op BenchmarkShaHashStringOld 100000 22701 ns/op
This commit is contained in:
parent
a680fb6f25
commit
df3469a792
1 changed files with 5 additions and 6 deletions
11
shahash.go
11
shahash.go
|
@ -24,14 +24,13 @@ var ErrHashStrSize = fmt.Errorf("max hash string length is %v bytes", MaxHashStr
|
||||||
// typically represents the double sha256 of data.
|
// typically represents the double sha256 of data.
|
||||||
type ShaHash [HashSize]byte
|
type ShaHash [HashSize]byte
|
||||||
|
|
||||||
// String returns the ShaHash in the standard bitcoin big-endian form.
|
// String returns the ShaHash as the hexidecimal string of the byte-reversed
|
||||||
|
// hash.
|
||||||
func (hash ShaHash) String() string {
|
func (hash ShaHash) String() string {
|
||||||
hashstr := ""
|
for i := 0; i < HashSize/2; i++ {
|
||||||
for i := range hash {
|
hash[i], hash[HashSize-1-i] = hash[HashSize-1-i], hash[i]
|
||||||
hashstr += fmt.Sprintf("%02x", hash[HashSize-1-i])
|
|
||||||
}
|
}
|
||||||
|
return hex.EncodeToString(hash[:])
|
||||||
return hashstr
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bytes returns the bytes which represent the hash as a byte slice.
|
// Bytes returns the bytes which represent the hash as a byte slice.
|
||||||
|
|
Loading…
Reference in a new issue