错误在这一行:

dataArray[iLedMatrix][iRow] |=  (byte)(bufferPattern[iRow]) & (1<<7);

dataArray 是:字节dataArray [NUMBER_LED_MATRIX] [NUMBER_ROW_PER_MATRIX];

是:const patternp * bufferPattern;

patternp 是类型的typedef:typedef prog_uchar patternp [NUM_ROWS];

我可以在引用文献中看到prog_uchar是1个字节(0到255)。所以我不明白关于失去精度的错误吗?任何的想法?

最佳答案

问题出在这个子表达式中

(byte)(bufferPattern[iRow])

变量bufferPattern的类型为const patternp *,因此当应用索引器时,结果为patternp。类型“patternp”是prog_uchar []的typedef。所以实际上这个表达是说



字节几乎可以肯定是一个字节值,而prog_uchar *是平台特定的指针类型(4或8字节)。实际上确实导致精度损失。也许您打算取消引用此值?
(byte)(*(bufferPattern[iRow]))

关于c++ - 错误:从 'const prog_uchar*'转换到 'byte'失去精度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/761893/

10-09 10:08