需要帮助了解此功能的作用
Need help understanding what this function does
我想了解这个函数在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;
*/
}
小端与大端是指多字节值在内存中的存储方式。在小端序机器上,它从最低有效字节到最高有效字节,而大端序机器则相反。
头被指定为具有big-endian顺序,正如您可以从big-endiancase中代码的简单性中看出的那样——每个字段都是直接分配的。
对于小端序的情况,每个int
中的字节必须反转。对于常量,这很容易,只需重新排列十六进制值即可。对于传递给函数的整数,必须将它们分解为4个独立的字节,并分别存储每个字节。
相关文章:
- 为什么我的打印功能不起作用?链表
- Cuda 基本程序 (将值写入矩阵和 std:cout 不起作用) ;主功能不启动
- 有人可以解释一下复制功能的作用吗?
- 我做错了什么?GetDiskFreeSpaceExA的功能根本不起作用
- 虚拟功能不起作用
- C++插入排序错误功能不起作用
- 使用链表.为什么我的插入功能不起作用?
- 功能指针不起作用(C )
- 为什么功能对我不起作用?C
- 循环c 时,此POW()在功能中起到了什么作用
- C 所有质数功能不起作用
- 当直接分配时,为什么此功能指针分配起作用,而不是与有条件的操作员一起使用
- C 功能模板如何起作用
- 朋友功能不起作用(语法错误)
- 这种功能如何起作用
- Vigenere密码的C++功能有时才起作用(适用于某些输入,跳过其他输入的班次)
- Winpcap:暂停/停止嗅探pcap_breakloop功能不起作用
- 我的模板功能具有通用引用不起作用
- 疯狂(乘,添加,划分)哈希功能如何起作用
- 尽管我的功能和cout语句的放置错误,但我的程序为什么会起作用