Estoy tratando de imprimir solo los datos de un archivo binario en Go. Ninguno de los compensados. Esto es lo que tengo para imprimirlo:
func readBinaryFile(filename string) {
file, err:= os.Open(filename)
if err!= nil {
log.Fatal(err)
}
defer file.Close()
reader:= bufio.NewReader(file)
buf:= make([]byte, 256)
for {
_, err:= reader.Read(buf)
if err!= nil {
if err!= io.EOF {
fmt.Println(err)
}
break
}
fmt.Printf("%s", hex.Dump(buf))
}
}
func main() {
filename:= os.Args[1]
readBinaryFile(filename)
}
¿Cómo elimino todo el desplazamiento que imprime? He probado mil cosas.
aquí hay un ejemplo de salida:
Solución del problema
Para una solución sencilla, recorte el desplazamiento de la salida de volcado.
package main
import (
"bufio"
"encoding/hex"
"io"
"log"
"os"
)
func dumpFile(filename string) error {
file, err:= os.Open(filename)
if err!= nil {
return err
}
defer file.Close()
rdr:= bufio.NewReader(file)
buf:= make([]byte, 0, 16)
for {
n, rErr:= io.ReadFull(rdr, buf[:cap(buf)])
buf = buf[:n]
if rErr == io.EOF {
break
}
dump:= hex.Dump(buf)[10:]
_, wErr:= io.WriteString(os.Stdout, dump)
if wErr!= nil {
return wErr
}
if rErr!= nil {
if rErr == io.ErrUnexpectedEOF {
break
}
return rErr
}
}
return nil
}
func main() {
filename:= ""
if len(os.Args) > 1 {
filename = os.Args[1]
}
err:= dumpFile(filename)
if err!= nil {
log.Fatal(err)
}
}
.
$ go run dump.go test.data
41 62 63 64 65 66 67 68 31 32 33 34 35 36 37 38 |Abcdefgh12345678|
58 59 5a 0a |XYZ.|
$
No hay comentarios:
Publicar un comentario