登录
首页 >  Golang >  Go问答

字节数组的校验和

来源:stackoverflow

时间:2024-03-17 10:12:33 321浏览 收藏

在计算机科学中,校验和是一种用来检查数据传输或存储过程中是否存在错误的技术。对于一个字节数组,校验和可以通过将数组中所有字节的值相加得到。对于给定的字节数组 `array`,我们可以使用以下公式计算校验和: ``` checksum = sum(array) ``` 例如,对于字节数组 `[115, 111, 109, 101, 32, 115, 116, 114, 105, 110, 103]`, 校验和计算如下: ``` checksum = 115 + 111 + 109 + 101 + 32 + 115 + 116 + 114 + 105 + 110 + 103 = 1114 ```

问题内容

我有一个 []byte,由字符串制成:

    array := []byte("some string")

看起来和预期的一样:

    [115 111 109 101 32 115 116 114 105 110 103]

有没有办法简单地获取[]byte的校验和?喜欢:

sum(array)

正确答案


也许您需要 md5.sum 来检查可靠性。

https://pkg.go.dev/crypto/md5#Sum

package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("some string")
    fmt.printf("%x", md5.sum(data))
}

另一个例子。

https://play.golang.org/p/7_ctunsqHS3

我认为尽可能避免使用 fmt 进行转换是很好的:

package main

import (
   "crypto/md5"
   "encoding/hex"
)

func checksum(s string) string {
   b := md5.Sum([]byte(s))
   return hex.EncodeToString(b[:])
}

func main() {
   s := checksum("some string")
   println(s == "5ac749fbeec93607fc28d666be85e73a")
}

https://godocs.io/crypto/md5#Sum

终于介绍完啦!小伙伴们,这篇关于《字节数组的校验和》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>