gpt4 book ai didi

c - 从 C 中的 GIF header 中读取数据

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:09 25 4
gpt4 key购买 nike

任何GIF图像文件的前13个字节如下:

3 bytes - the ascii characters "GIF"
3 bytes - the version - either "87a" or "89a"
2 bytes - width in pixels
2 bytes - height in pixels
1 byte - packed fields
1 byte - background color index
1 byte - pixel aspect ratio

我可以通过使用某种代码自己获取前六个字节:

int G = getchar();
int I = getchar();
int F = getchar();

等等 .. 对 87a/89a 部分做同样的事情,所有这些都获取前 6 个字节,为 GIF87a 等提供 ascii 字符。

好吧,我想不出如何获取其余信息。我尝试使用相同的 getchar();方法,但这不是我期望的那样。假设我有一个 350x350 的 GIF 文件,因为宽度和高度各为 2 个字节,我使用 getchar 两次,最后宽度为“94”和“1”,两个数字,因为有两个字节。但是我如何使用这些信息来获取以 10 为基数的实际宽度和高度?我尝试按位与 94 和 1,但后来意识到它返回 0。

我想如果我能找到获取宽度和高度的方法,我就能自己访问其余信息。

像素的宽度和高度以 little indian 格式存储。

最佳答案

就像任何其他数字都被分解成有限范围内的部分一样。例如,查看 43。每个数字都有一个有限的范围,从 0 到 9。所以下一个数字是 10 的个数,然后是百 (10*10) 等等。在这种情况下,值的范围可以从 0 到 255,因此下一个数字是 256 的数量。

256 * 1 + 94 = 350

标准应该指定字节顺序,即最高位(称为big endian)先到最低位(称为little endian)先到.

Byte Order: Little-endian

关于c - 从 C 中的 GIF header 中读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14804083/

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