hash - read - Golang: de[] bytes para obtener hexadecimal
save bytes to file golang (2)
http://play.golang.org/p/SKtaPFtnKO
func md(str string) []byte {
h := md5.New()
io.WriteString(h, str)
fmt.Printf("%x", h.Sum(nil))
// base 16, with lower-case letters for a-f
return h.Sum(nil)
}
Todo lo que necesito es una cadena de clave de hash que se convierte de una cadena de entrada. Pude obtenerlo en formato de bytes usando h.Sum (nil) y poder imprimir la clave Hash en formato% x. Pero quiero devolver el formato% x desde esta función para poder usarlo para convertir la dirección de correo electrónico a Hash-key y usarlo para acceder a Gravatar.com.
¿Cómo obtengo% x Hash-key usando la función md5 en Go?
Gracias,
Debes evitar usar el paquete fmt
para esto. El paquete fmt
usa la reflexión y es caro para cualquier otra cosa que no sea la depuración. Usted sabe lo que tiene y lo que quiere convertir, por lo que debe usar el paquete de conversión adecuado.
Para convertir de binario a hexadecimal, y viceversa, use el paquete encoding/hex .
A la string
hexagonal:
str := hex.EncodeToString(h.Sum(nil))
De la string
hexagonal:
b, err := hex.DecodeString(str)
También hay funciones de codificación / decodificación para []byte
.
Cuando necesite convertir a / desde un decimal, use el paquete strconv .
De int
a string
:
str := strconv.Itoa(100)
De string
a int
:
num, err := strconv.Atoi(str)
Hay varias otras funciones en este paquete que hacen otras conversiones (base, etc.).
Entonces, a menos que esté depurando o formateando un mensaje de error, use las conversiones adecuadas . Por favor.
Si entendí correctamente quieres devolver el formato% x:
puedes importar hexadecimal y usar el método EncodeToString
str := hex.EncodeToString(h.Sum(nil))
o simplemente Sprintf el valor:
func md(str string) string {
h := md5.New()
io.WriteString(h, str)
return fmt.Sprintf("%x", h.Sum(nil))
}
tenga en cuenta que Sprintf es más lento porque necesita analizar la cadena de formato y luego reflexionar según el tipo encontrado