2 回答
TA贡献1804条经验 获得超3个赞
将从文件中读取的数据与[]byte包含魔术值的数据进行比较。
使用 magic 值声明一个包级变量:
var magicValue = []byte{0x64,0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xc0}
与bytes.Equal比较:
data := make([]byte, len(magicValue))
_, err := io.ReadFull(f, data)
if err != nil {
// handle error
}
if bytes.Equal(data, magicValue) {
fmt.Println("64 bit header found")
}
使用io.ReadFull确保读取8字节数据。
TA贡献1842条经验 获得超12个赞
您可以比较数组:
package main
import (
"fmt"
"io"
"log"
"os"
"bytes"
)
var magicNumber = []byte{0x64, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xc0}
func main() {
path := "test.exe.16900.sancov"
f, err := os.Open(path)
if err != nil {
log.Fatal("Error while opening file", err)
}
data := make([]byte, len(magicNumber))
if _, err := io.ReadFull(f, data); err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", data)
if bytes.Equal(data, magicNumber) {
fmt.Println("header found")
}
}
- 2 回答
- 0 关注
- 125 浏览
添加回答
举报