gpt4 book ai didi

go - 如何使用 Go 读取文件的前四个字节?

转载 作者:IT王子 更新时间:2023-10-29 01:51:39 25 4
gpt4 key购买 nike

我正在学习 Go,正在尝试读取文件的前四个字节。我想检查文件是否包含我要查找的特定文件头。不过,我的代码没有显示我期望的字节。有谁知道为什么下面的代码可能不起作用?它确实读取了一些字节,但它们不是我识别或期望看到的字节。它们不是随机的或任何东西,因为每次我运行它时它们都是相同的,所以它可能是指向其他东西或其他东西的指针。

此外,我意识到我忽略了错误,但那是因为我进入了 hack 模式,而这不起作用,并尽可能多地删除了错误,试图解决问题。

package main

import (

"os"
"io"
"fmt"

)

type RoflFile struct {

identifier []byte

}

func main() {

arguments := os.Args[1:]

if len(arguments) != 1 {

fmt.Println("Usage: <path-to-rofl>")
return

}

inputfile := arguments[0]

if _, err := os.Stat(inputfile); os.IsNotExist(err) {

fmt.Printf("Error: the input file could not be found: %s", inputfile)
return

}

rofl := new(RoflFile)
rofl.identifier = make([]byte, 4)

// open the input file so that we can pull out data
f, _ := os.Open(inputfile)

// read in the file identifier
io.ReadAtLeast(f, rofl.identifier, 4)

f.Close()

fmt.Printf("Got: %+v", rofl)

}

最佳答案

当我针对以“9876”开头的输入文件运行您的代码时,我得到:

Got: &{identifier:[57 56 55 54]}

当针对以“1234”开头的输入文件运行时,我得到:

Got: &{identifier:[49 50 51 52]}

对我来说,该程序按预期运行。要么您的系统出现问题,要么您没有意识到您正在获取文件中前四个字节的十进制值。你期待十六进制吗?或者您是否希望看到根据某种编码(例如,ASCII 或 UTF-8,看到“9 8 7 6”而不是“57 56 55 54”)解释的字节?

为了将来引用(或者如果这没有回答您的问题),在这些情况下包含您的输入文件、您在系统上获得的输出以及您期望的输出会很有帮助。 “它们不是我认识或期望看到的字节”留下了很多可能性。

关于go - 如何使用 Go 读取文件的前四个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16725439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com