我正在尝试找出两个字节arar之间的差异并存储delta。
我已阅读此文档https://golang.org/pkg/bytes/
,但我没有找到任何显示如何找到差异的内容。
感谢。
答案 0 :(得分:0)
听起来你只想要一个带有两个字节切片的函数,并返回一个包含输入切片中每个元素差异的新切片。下面的示例函数断言输入切片都是非零且具有相同的长度。它还返回一个int16s片段,因为字节差异的范围是[-255,255]
。
package main
import "fmt"
func main() {
bs1 := []byte{0, 2, 255, 0}
bs2 := []byte{0, 1, 0, 255}
delta, err := byteDiff(bs1, bs2)
if err != nil {
panic(err)
}
fmt.Printf("OK: delta=%v\n", delta)
// OK: delta=[0 1 255 -255]
}
func byteDiff(bs1, bs2 []byte) ([]int16, error) {
// Ensure that we have two non-nil slices with the same length.
if (bs1 == nil) || (bs2 == nil) {
return nil, fmt.Errorf("expected a byte slice but got nil")
}
if len(bs1) != len(bs2) {
return nil, fmt.Errorf("mismatched lengths, %d != %d", len(bs1), len(bs2))
}
// Populate and return the difference between the two.
diff := make([]int16, len(bs1))
for i := range bs1 {
diff[i] = int16(bs1[i]) - int16(bs2[i])
}
return diff, nil
}