GOOGLE ADS

domingo, 17 de abril de 2022

¿Cómo elimino el desplazamiento de la salida de un archivo binario en Go?

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:
ejemplo


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

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...