在C ++中,我使用 unsigned char 指针来保存字节数组,这样我就可以在每个元素中为打印行添加8位颜色代码。
我有一个数组保存数据,一个数组保存空格,我使用for循环填充第三个数组,以便数据位于开头,空白区位于结尾。
创建指针时,当我在运行时监视内存时,所有元素的默认值都为0xCD
,它在颜色图表上是洋红色。我使用for循环用0x00填充我想要的字节,但它不会写入第三个数组的默认数组值。
所以,我坚持使用我的打印机打印洋红色而不是白色空间。然而,我可以只用数据就可以很好地写出那个数组。但不是空白。我不确定是什么原因。任何人都可以给我任何见解吗?这是我的代码......
PrintLine(unsigned char* pbData, unsigned long ulDataSize, UINT xoffset)
{
if (xoffset > 0)
{ //create pointer to byte array for xoffset
unsigned char* offsetData;
offsetData = new unsigned char[(xoffset / 8)]; //x offset is divided by 8
//to convert pixels to bytes
//create pointer to byte array to hold image data and offset data
unsigned char* finalData;
finalData = new unsigned char[ulDataSize + (xoffset / 8)];
//begin final data with image data passed into the function
for (int count = 0; count < ulDataSize; count++)
{
finalData[count] = pbData[count];
}
//populate offset data with blank bytes
for (int count = 0; count < (xoffset / 8); count++)
{
offsetData[count] = 0x00;
}
//add blank data for offset to finalData
int position = 0;
for (int count = ulDataSize; count < ulDataSize + (xoffset / 8);count++)
{
finalData[ulDataSize] = offsetData[position];//also tried =0x00
position++;
}
//Send data to printer.
if (!(Write(finalData, ulDataSize + (xoffset / 8)))
{
return FALSE;
}
return TRUE;
}
}
答案 0 :(得分:1)
乍一看,您的代码没有错误,但我看到的内容看起来很可疑。我在谈论这条线:
finalData[ulDataSize] = offsetData[position]; //also tried =0x00
我认为你想要的是:
finalData[count] = offsetData[position];//also tried =0x00
另一方面,你可以像这样编写你的循环:
for (int count = 0; count < (xoffset / 8); count++)
{
finalData[ulDataSize + count] = offsetData[count];
}
使代码更具可读性。