Ví dụ:Làm thế nào để tạo ra số băm của một chuỗi trong Go?
hash("HelloWorld") = 1234567
Có chức năng tích hợp nào có thể làm được điều này không?
Cảm ơn.
Ví dụ:Làm thế nào để tạo ra số băm của một chuỗi trong Go?
hash("HelloWorld") = 1234567
Có chức năng tích hợp nào có thể làm được điều này không?
Cảm ơn.
Gói hash hữu ích cho việc này. Lưu ý rằng nó trừu tượng hóa hơn việc triển khai băm cụ thể. Một số gói sẵn sàng được tìm thấy trong gói subdirectories.
Ví dụ:
package main
import (
"fmt"
"hash/fnv"
)
func hash(s string) uint32 {
h := fnv.New32a()
h.Write([]byte(s))
return h.Sum32()
}
func main() {
fmt.Println(hash("HelloWorld"))
fmt.Println(hash("HelloWorld."))
}
(Cũng here)
Output:
926844193
107706013
Ngoài ra, có thể sử dụng cá thể đơn và 'Write' /' Reset', thay vì tạo 'New32a' mỗi lần. Tôi không biết nó tốn bao nhiêu. Ví dụ: https://play.golang.org/p/aUeNBo755g –
Đây là một chức năng mà bạn có thể sử dụng để tạo ra một số băm:
// FNV32a hashes using fnv32a algorithm
func FNV32a(text string) uint32 {
algorithm := fnv.New32a()
algorithm.Write([]byte(text))
return algorithm.Sum32()
}
Tôi đặt cùng một nhóm những chức năng tiện ích băm ở đây: https://github.com/shomali11/util
Bạn sẽ tìm thấy FNV32
, FNV32a
, FNV64
, FNV65a
, MD5
, SHA1
, SHA256
và SHA512
Không Tới cụ thể nhưng thú vị và có liên quan: http://stackoverflow.com/a/107657/532430 – thwd
được biết đến là tiền tố, về mặt lý thuyết. – Roylee