【发布时间】:2019-01-16 01:09:26
【问题描述】:
我想了解这个函数在 C 中是如何工作的。我相信它是用来帮助为文件创建标题的,正如其名称所给出的那样。这是处理图像处理的较大文件的一部分。不过这部分代码是在处理完成之后的:
void header( int row, int col, unsigned char head[32] )
{
int *p = (int *)head;
char *ch;
int num = row * col;
/* Choose little-endian or big-endian header depending on the machine. Don't modify this */
/* Little-endian for PC */
*p = 0x956aa659;
*(p + 3) = 0x08000000;
*(p + 5) = 0x01000000;
*(p + 6) = 0x0;
*(p + 7) = 0xf8000000;
ch = (char*)&col;
head[7] = *ch;
ch ++;
head[6] = *ch;
ch ++;
head[5] = *ch;
ch ++;
head[4] = *ch;
ch = (char*)&row;
head[11] = *ch;
ch ++;
head[10] = *ch;
ch ++;
head[9] = *ch;
ch ++;
head[8] = *ch;
ch = (char*)#
head[19] = *ch;
ch ++;
head[18] = *ch;
ch ++;
head[17] = *ch;
ch ++;
head[16] = *ch;
/*
// Big-endian for unix
*p = 0x59a66a95;
*(p + 1) = col;
*(p + 2) = row;
*(p + 3) = 0x8;
*(p + 4) = num;
*(p + 5) = 0x1;
*(p + 6) = 0x0;
*(p + 7) = 0xf8;
*/
}
【问题讨论】:
-
您有什么特别想要的吗?它使用某些值填充 head[],具体取决于 row、col 和 num 的初始值。它使用一些神奇的数字来设置某些值,然后在日落时分离开。
-
由于它是图像处理的一部分,它很可能正在读取文件的标题。确实,您需要使用调试器逐步完成它以查看发生了什么