我想比较sha256的输出。Sum256(),它是带[]字节的[32]字节。
我得到一个错误不匹配类型[32]字节和[]字节。我无法将[]字节转换为[32]字节。
有办法做到这一点吗?
我用这个线索得到了答案
Go和PHP中的SHA256给出了不同的结果
converted := []byte(raw)
hasher := sha256.New()
hasher.Write(converted)
return hex.EncodeToString(hasher.Sum(nil)) == encoded
这不是将[32]字节转换为[]字节,而是使用不同的函数,该函数不以[32]字节输出。
您可以通过切片将任何数组([size]T)简单地转换为切片([]T):
x := [32]byte{}
slice := x[:] // shorthand for x[0:len(x)]
从那里你可以把它和你的切片进行比较,就像你比较其他两个切片一样。
func Equal(slice1, slice2 []byte) bool {
if len(slice1) != len(slice2) {
return false
}
for i := range slice1 {
if slice1[i] != slice2[i] {
return false
}
}
return true
}
编辑:正如Dave在评论中提到的,在bytes
包bytes中还有一个
Equal
方法。相等(x[:],y[:])
问题内容: 我很好奇为什么,当我将一个数组与一个值进行比较时… …返回,而… …才不是?是一个数组 问题答案: 比较整数,因为0xFF是整数,此表达式 会将您的字节 扩展为int并将括号内的内容与第二int进行比较。至于你说的是,它将首先被调整为整数且相比于整数,所以这个作品。 将一个字节与int比较: 是一个字节(有符号),其值为。 不等于,因此这就是为什么在比较integer之前必须将data
问题内容: 我有一个带有〜已知二进制序列的字节数组。我需要确认二进制序列是应该的。除之外,我还尝试了其他方法,但均无济于事。 问题答案: 在您的示例中,您具有: 在处理对象时,java中会比较 参考值 。您正在检查对by返回的数组的引用是否与所保存的引用相同,这当然永远不会正确。此外,数组类不会覆盖,因此其行为仅是比较参考值。 为了比较两个数组的 内容 ,Arrays类提供了静态数组比较方法。
问题内容: 我只是想知道哪种方法更好(或者我是否缺少更好的方法)。我试图确定一个单词的第一个字母和最后一个字母是否相同,并且有两个明显的解决方案。 要么 据我了解,第一个只是提取字符串的片段并进行字符串比较,而第二个则是从任一端提取字符并将其作为字节进行比较。 我很好奇两者之间是否存在性能差异,并且是否有任何“可取的”方式来做到这一点? 问题答案: 如果用字母表示您的符文,请使用: 如果您的意思是
问题内容: http://golang.org/ref/spec#Comparison_operators Go支持字符串比较,没有任何特殊功能。Go运行时是否在后台进行工作以比较字符串文字? 问题答案: 如下面的程序集转储所示,在进行短路检查以查看两个操作数是否为相同的内存字符串(第11行)之后,将字符串比较从运行时委托给函数(第17行): 除非您在编译器或运行时上工作,否则不要太在意您:只需使
本文向大家介绍Go语言interface 与 nil 的比较,包括了Go语言interface 与 nil 的比较的使用技巧和注意事项,需要的朋友参考一下 interface简介 Go语言以简单易上手而著称,它的语法非常简单,熟悉C++,Java的开发者只需要很短的时间就可以掌握Go语言的基本用法。 interface是Go语言里所提供的非常重要的特性。一个interface里可以定义一个或者多个
问题内容: 如果输入参数是字节数组-byte [],则dll的本机方法可在Java中使用。如果我们使用c#中的相同方法,则会抛出EntryPointNotFoundException。 是因为java和c#中的byte []是不同的东西吗?如果是这样,我应该如何使用c#中的本机函数? 问题答案: Java缺少无符号类型。特别是,Java缺少无符号字节的原始类型。Java字节类型是带符号的,而C#字