急问memset设立一块内存区域,要求不按字节,按三字节RGB的方式
急问memset设置一块内存区域,要求不按字节,按三字节RGB的方式
如题,
现有memset只能按字节拷贝内存,现需要按三字节拷贝有好的思路没?
急!!
------解决方案--------------------
RGB3字节不好办,RGBA4字节还凑合。参考下面:
------解决方案--------------------
------解决方案--------------------
如题,
现有memset只能按字节拷贝内存,现需要按三字节拷贝有好的思路没?
急!!
------解决方案--------------------
RGB3字节不好办,RGBA4字节还凑合。参考下面:
#include <stdio.h>
float data[500];
int i;
void main() {
for (i=0;i<500;i++) {data[i]=1.0f;printf("%g\n",data[i]);}
__asm {
push ecx
push edi
mov ecx,500
mov eax,0xBF800000 //-1.0f
lea edi,data
rep stosd
pop edi
pop ecx
}
for (i=0;i<500;i++) printf("%g\n",data[i]);
}
------解决方案--------------------
struct rgb
{
unsigned char r;
unsigned char g;
unsigned char b;
};
rgb v = {1, 2, 3};
char buf[81];
char (*p)[3] = (char(*)[3])buf;
for(; p < (char(*)[3])(buf + sizeof(buf)); ++p)
{
(*p)[0] = v.r;
(*p)[1] = v.g;
(*p)[2] = v.b;
}
------解决方案--------------------
struct RGB
{
BYTE R;
BYTE G;
BYTE B;
};
void RGBSet(RGB *pRGBDest,DWORD dw0BGR,int iCount)
{
int i;
DWORD dwRBGR,dwGRBG,dwBGRB;
dwRBGR=dw0BGR
------解决方案--------------------
(dw0BGR<<24);
dwGRBG=(dw0BGR>>8)
------解决方案--------------------
(dw0BGR<<16);
dwBGRB=(dw0BGR<<8)
------解决方案--------------------
(dw0BGR>>16);