package main import ( "bufio" "fmt" "io" "log" "os" ) const fname = "/home/rob/Desktop/example.mp3" const syncHeader1 = 0xFF const syncHeader2 = 0xFE func main() { f, err := os.Open(fname) if err != nil { log.Fatal(err) } bufreader := bufio.NewReader(f) buf := make([]byte, 4) var i int for { _, err := io.ReadFull(bufreader, buf) if err != nil { log.Fatal(err) } if parseBytes(buf) { fmt.Printf("Got possible header %X at %d\n", buf, i) } i++ bufreader.UnreadByte() } } func parseBytes(buf []byte) bool { return buf[0]&syncHeader1 == syncHeader1 || buf[0]&syncHeader2 == syncHeader2 }