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條經驗 獲得超13個贊
您可以比較數組:
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 關注
- 168 瀏覽
添加回答
舉報