为了账号安全,请及时绑定邮箱和手机立即绑定

切片无法转换为字符串

切片无法转换为字符串

Go
ibeautiful 2021-09-13 10:50:44
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)

}


查看完整回答
反对 回复 2021-09-13
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

md5.Sum()返回字节,不可打印的 ASCII 字符。如果要查看这些字节的十六进制表示,可以使用fmt.Sprintf("%x", ...),如下所示:

v_pwd_encrypt := fmt.Sprintf("%x", v_pwd_encrypt_byte)


查看完整回答
反对 回复 2021-09-13
  • 2 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信