zoukankan      html  css  js  c++  java
  • util.go 源码阅读

    import (
        "crypto/md5"
        "encoding/hex"
        "encoding/json"
        "fmt"
        "hash/crc32"
        "hash/fnv"
        "strconv"
    )

    //string to hash
    //字符串转化为hash值   使用的是 IEEE 
    func MakeHash(s string) string {
        const IEEE = 0xedb88320
        var IEEETable = crc32.MakeTable(IEEE) //创建IEEE table
        hash := fmt.Sprintf("%x", crc32.Checksum([]byte(s), IEEETable))
        return hash
    }
    //字符串转化为hash值
    func HashString(encode string) uint64 {
        hash := fnv.New64()
        hash.Write([]byte(encode))
        return hash.Sum64()
    }

    // 制作特征值方法一
    func MakeUnique(obj interface{}) string {
        baseString, _ := json.Marshal(obj)
        return strconv.FormatUint(HashString(string(baseString)), 10)
    }

    // 制作特征值方法二
    func MakeMd5(obj interface{}, length int) string {
        if length > 32 {
            length = 32
        }
        h := md5.New()
        baseString, _ := json.Marshal(obj)
        h.Write([]byte(baseString))
        s := hex.EncodeToString(h.Sum(nil))//转化为16进制字符串
        return s[:length]
    }

  • 相关阅读:
    webstorm & phpstorm破解
    JSON和JSONP
    angular.extend(dst, src)对象拓展
    angular.foreach 循环方法使用指南
    angular 指令@、=、&的用法和区别
    angular directive指令相互独立
    angular directive指令的复用
    对apply和call的理解
    图片上传
    vue 路由缓存
  • 原文地址:https://www.cnblogs.com/zhangboyu/p/7462042.html
Copyright © 2011-2022 走看看