C++ 编写tga文件

C++ 编写tga文件,c++,header,tga,C++,Header,Tga,我不明白,当我们写tga标题时,为什么我们要做这样的事情来显示图片的尺寸: header[12] =(width & 255); header[13] =(width>>8 ); 提前感谢TGA宽度和高度写为两个字节,我假设标题的类型为: unsigned char header[HEADER_SIZE]; 然后,为了正确地写入width,我认为这是int类型,您必须将宽度的索引12放在低字节(最低有效字节)值,将宽度的索引13放在高字节(最高有效字节)部

我不明白,当我们写tga标题时,为什么我们要做这样的事情来显示图片的尺寸:

    header[12] =(width & 255);
    header[13] =(width>>8 );

提前感谢

TGA宽度和高度写为两个字节,我假设
标题
的类型为:

unsigned char header[HEADER_SIZE];
然后,为了正确地写入
width
,我认为这是
int
类型,您必须将宽度的索引12放在低字节(最低有效字节)值,将宽度的索引13放在高字节(最高有效字节)部分

所以,如果宽度是1023,那么在二进制中它是:
1111111
,所以在标题[12]中,您需要将
1023&255
以二进制形式放入
11111111
,在标题[13]中放入
11

1023 = 11 11111111
          ^^^^^^^^-- header[12] =(width & 255); // 255 is 11111111, 
       ^^----------- header[13] =(width>>8 );
实际上,您可以将上述内容重写为:

header[12] =(width % 256);
header[13] =(width / 256);
事实上,您不会直接将整数写入头,因为tga文件可以在具有不同字节顺序的系统上读取,在其规范中,您可以读取:

3字节排序TGA文件使用“英特尔字节排序”存储 约定(最低有效字节在前,最高有效字节在后)。 因此,在基于摩托罗拉的系统上运行的应用程序将 需要反转字节顺序,以便在 文件已被读取


因此,这种书写宽度的方式使您的代码平台独立。

这里不清楚您在问什么。您可以在这里查看我在做这件事时遇到的困难:然后您可以在这里查看实际如何做:+1回答正确。小nit:
因此这种写入宽度的方式使此格式平台独立。
它使代码平台独立,格式已经是;)。