- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我必须将 PHP 脚本转换为 Go,现在遇到了一个问题(我预见会有更多问题)。
在脚本中,它使用 gzopen
打开 .gz 和非 .gz 文件,然后获取读取的数据并返回它的 MD5 哈希版本。我尝试过使用 zlib.NewReader、gzip.NewReader 甚至 flate,但它们都不起作用。有人能指出我正确的方向吗?
file, err := os.Open("somefile.dat")
if err != nil {
return err
}
// rc := flate.NewReader(f) //error: corrupt input before offset 5
// rc, err := zlib.NewReader(f) //error: invalid header
// rc, err := gzip.NewReader(f) //error: invalid header
if err != nil {
return err
}
buffer := make([]byte, 4096)
rc.Read(buffer)
注意:关于转换为 MD5 哈希,我遵循了示例 here我最初使用 md5.Sum() 但它返回了一个 [Size]byte,其中 Size 是 16bytes,这不是我需要的。我必须将 MD5 校验和转换为 32 个字符的十六进制字符串,以匹配我需要的校验和。希望这对其他人有帮助。
最佳答案
由于您需要支持从 gzip 和非 gzip 文件读取,添加一个检查以查看 if gzip.NewReader
是否返回 ErrHeader
错误。如果返回,回退到正常读取文件:
file, err := os.Open("somefile.dat")
if err != nil {
return err
}
var rc io.ReadCloser
if gz, err := gzip.NewReader(file); err == gzip.ErrHeader {
if _, err := file.Seek(0, io.SeekStart); err != nil {
return err
}
rc = file
} else if err == nil {
rc = gz
} else {
return err
}
md5sum := md5.New()
if _, err := io.Copy(md5sum, rc); err != nil {
return err
}
if err := rc.Close(); err != nil {
return err
}
// TODO: md5sum.Sum
关于php - Go中如何实现PHP的gzopen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57559374/
zlib gzopen() 返回压缩文件流。 gzFile data_file; data_file = gzopen(filename.c_str(), "r"); 其中 data_file 是压缩
我的 C 程序使用了一些 zlib 函数(如 gzopen、gzread)。我在我的程序中包含了zlib.h 头文件并在编译时添加了-lz 选项,但我仍然得到一个错误,即gz 函数有 undefine
我目前正在尝试安装 moses 脚本,它是机器翻译工具 moses 的一部分,但不断出现错误: /home/moses/scripts/training/lexical-reordering/reor
我有像这样打开和处理 gzip 文件的应用程序: $fh = gzopen($fn, "r"); if ($fh) { while ($line = fgets($fh)) {
zlib库(zlib版本1.2.3)中有一些函数可以解压 我想使用 uncompress 函数解压我的源 zip (.gz) 文件。它不工作(错误代码 -3)但 gzopen 是。当我输入有效负载指针
function uncompress($srcName, $dstName) { $sfp = gzopen($srcName, "rb"); $dstName = str_repl
我想使用 gzopen 函数打开一个 .gz 文件,但出现了这个错误: Fatal error: Call to undefined function gzopen() 这里是关于我的安装的一些细节:
我在尝试激活 WordPress 主题后看到以下错误。浏览器中的错误信息是... Fatal error: Call to undefined function gzopen() in /var/ww
我是一名优秀的程序员,十分优秀!