gpt4 book ai didi

c - 在c中提取BMP图像的宽度

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

我是一名初级程序员,正在尝试用 C 语言学习图像处理并找到了一些教程,但我卡在了一行(负责提取 宽度 )int 宽度 = *(int*)&header[18];我无法理解上面的语法。谁能简单解释一下?

最佳答案

int width = *(int*)&header[18];

假设 headerchar*char[] 类型,一个接一个:

header[18]

→ 获取header的第18个元素

&header[18]

→ 获取header的第18个元素的地址

(int*)&header[18]

→ 将 header 的元素 18 的地址转换为指向 int

的指针
*(int*)&header[18]

→ 获取指向int 的指针的内容。


BMP文件中的值存储little-endian .因此,此代码仅适用于小端平台。更通用的代码如下所示:

int width
= (unsigned)(unsigned char)header[18]
| (unsigned)(unsigned char)header[19] << 8
| (unsigned)(unsigned char)header[20] << 16
| (unsigned)(unsigned char)header[21] << 24;

int width 现在由移动到相应位置的各个字节组成。这应该适用于所有字节序。

关于c - 在c中提取BMP图像的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50908563/

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