func (this *AdminModel) Login(v_name string, v_pwd string) (bool, error, uint) { o := orm.NewOrm() v_pwd_encrypt_byte := md5.Sum([]byte(v_pwd)) v_pwd_encrypt := string(v_pwd_encrypt_byte[:]) t_admin := Admin{Name: v_name, Pwd: v_pwd_encrypt} fmt.Printf("username:%v password:%v\n", v_name, v_pwd_encrypt_byte) fmt.Printf("username:%v password:%v\n", v_name, v_pwd_encrypt_byte[:]) fmt.Printf("username:%v password:%v\n", v_name, v_pwd_encrypt) err := o.Read(&t_admin, "Name", "Pwd") if err != nil { return false, err, 0 } else { return true, nil, t_admin.Id }}打印结果:username:yuhaya password:[97 22 175 237 203 11 195 16 131 147 92 28 38 47 244 201]username:yuhaya password:[97 22 175 237 203 11 195 16 131 147 92 28 38 47 244 201]username:yuhaya password:a??? ???\&/??为什么打印结果的最后一行是乱码?v_pwd_encrypt := string(v_pwd_encrypt_byte[:])这个职位转换是不可能的吗?
2 回答
忽然笑
TA贡献1806条经验 获得超5个赞
添加到@Ainar-G 的答案中,hex.EncodeToString是最有效的方法,因为它不涉及反射或类型猜测,例如fmt.Sprintf.
func main() {
sum := md5.Sum([]byte("meh"))
stringSum := hex.EncodeToString(sum[:])
fmt.Println(stringSum)
}
哈士奇WWW
TA贡献1799条经验 获得超6个赞
md5.Sum()
返回字节,不可打印的 ASCII 字符。如果要查看这些字节的十六进制表示,可以使用fmt.Sprintf("%x", ...)
,如下所示:
v_pwd_encrypt := fmt.Sprintf("%x", v_pwd_encrypt_byte)
- 2 回答
- 0 关注
- 165 浏览
添加回答
举报
0/150
提交
取消