gpt4 book ai didi

git - 从 Haskell 中的 git packfile index 获取魔数(Magic Number)

转载 作者:太空狗 更新时间:2023-10-29 13:08:19 28 4
gpt4 key购买 nike

我想从 git 包文件索引中获取魔数(Magic Number),以确保它确实是一个包文件。 pack format documentation指出魔数(Magic Number)是“/377tOc”。例如,当我用 Ruby 打开 packfile 时,我在读取文件时得到了这个:

> File.open("pack-4412d2306cfe9a0b6d1b9b4430abc767022e8a3c.idx").read(4)
=> "\377tOc"

但是在 Haskell 中我得到了这个:

> h <- openFile "pack-4412d2306cfe9a0b6d1b9b4430abc767022e8a3c.idx" ReadMode
> Data.ByteString.hGet h 4
=> "\255tOc"

我认为我遗漏了一些明显的东西,但我不清楚那是什么。我在这里做错了什么?

最佳答案

非 ascii 字符 ('\255') 仅以十进制而非八进制显示。

确认,根据 od,前 4 个字节确实是八进制/ascii 或 1 个字节的十进制:

> $ od -c foo.idx  | head -1
0000000 377 t O c \0 \0 \0 002 \0 \0 002 250 \0 \0 005 B

> $ od -t u1 /tmp/x | head -1
0000000 255 116 79 99 0 0 0 2 0 0 2 168 0 0 5 66

在 Haskell 中:

> s <- Data.ByteString.readFile "foo.idx"
> Data.ByteString.take 4 s
"\255tOc"

所以,请记住十进制的 255 是八进制的 377。

关于git - 从 Haskell 中的 git packfile index 获取魔数(Magic Number),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5588429/

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