我目前正在尝试为图像创建一个320x240阵列,但像素是按行发送的(一次320个)。所以我想到只运行一个计数为240的循环,以便在每次计数时我将较小的数组[320]插入较大的数组[240] [320]
这是我到目前为止所做的代码。
int main()
{
int mi,mj,this;
while(this < 240)
{
decodeHex(stringToDecode,hexValues);
compile(this,hexValues);
this=this+1;
}
for(mi = 0; mi < 240; mi=mi+1)
{
printf("\npctureArray [%d][%d]\n",mi,320);
for(mj=0; mj < 320;mj=mj+1)
{
printf("%lx",pictureArray[mi][mj]);
}
}
return 0;
}
void decodeHex(char * encodedString,unsigned long * hexConverted)
{
int i;
unsigned long offset = 0x41;
for(i=0;i<strlen(encodedString);i = i+3)
{
*hexConverted = (((unsigned long)encodedString[i]- offset) << 8) | (((unsigned long)encodedString[i+1] - offset) << 4) | ((unsigned long)encodedString[i+2] - offset);
hexConverted = hexConverted + 1;
}
}
void compile(int i,unsigned long * ptr)
{
int j;
for(j= 0;j<320;j=j+1)
{
pictureArray[i][j] = (unsigned long)*(ptr+j);
}
}
代码的解码器部分接收一个char数组[960],因此它被转换为无符号长数组[320]&lt; --- 960/3 = 320 RGBs
我很困惑为什么我的代码有分段错误。任何人都可以偷看并告诉我这里是否有我遗失的东西
答案 0 :(得分:0)
设置this
的初始值。
this = 0;
如果没有初始化,this
将不会包含0
。
答案 1 :(得分:0)
谢谢你们!无论如何,我已经把它整理出来了。
问题出现了,
char array[960] = " ....960 letters..."
因为我认为当你以这种方式声明一个字符串时,它应该是
char array[#ofelems + 1] = ".... #ofelems...."
“+ 1”,因为最后一个元素中嵌入了"\0"