登录
首页 >  Golang >  Go问答

如何使用 golang 计算字符串的 git blob sha

来源:stackoverflow

时间:2024-04-20 12:27:40 304浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《如何使用 golang 计算字符串的 git blob sha》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

给定一个字符串,如何计算它的 git BLOB SHA。我尝试使用golang提供的api计算字符串上的sha,但它与git blob sha不匹配。

如何使用 golang 获取与 git blob sha 相同的 sha


正确答案


git 计算 blob sha 的方式有点不同。它在前面添加一个标头 blob \x00

这里是内容的字节长度,\x00是结束分隔符,是实际的内容字符串。

我创建了下面的函数,它返回给定字符串的 git blob sha

func computeGitBlobSHA(s string) string {
    p := fmt.Sprintf("blob %d\x00", len(s))
    h := sha1.New()
    h.Write([]byte(p))
    h.Write([]byte(s))
    return hex.EncodeToString(h.Sum([]byte(nil)))
}

因此调用 computegitblobsha("hello") 将返回 5ab2f8a4323abafb10abb68657d9d39f1a775057,这是实际的 git sha。

请拨打 Go Playground 查看此信息

如果需要,您可以使用 echo -n 'hello' | 进行验证。 git hash-object --stdin

本篇关于《如何使用 golang 计算字符串的 git blob sha》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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