【发布时间】:2016-04-13 21:30:53
【问题描述】:
我有一个包含 256 个整数的缓冲区,因此创建了一个 16x16 矩阵。我想要完成的是读取存储在缓冲区中的值,就好像它是一个矩阵一样。 因此,如果我给出 5 和 3 的坐标,我应该得到 Y 为 5 且 Y 为 X 的值。
例如,这里是缓冲区的一小部分,但在一个 16x3 矩阵中以便于阅读,并将其视为 0 而不是 1 的起始索引)
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4
4 5 6 7 8 9 1 0 2 3 4 5 6 7 8 9
因此,如果我要尝试获取 Y = 2 和 X = 5 处的值,我应该返回值 9。
这是我已经拥有的一些代码,但我的数学是错误的。
unsigned char getTablevalue(int tableIndex, unsigned char *buffer) {
return buffer[tableIndex];
}
void getInput(....) {
int yValue = 2;
int xValue = 5;
int returnValue = 0;
unsigned char *buffer = malloc(256 * sizeof (unsigned char));
memset(buffer, 0, 256);
... Some code to fill buffer...
returnValue = getTablevalue({what can I put here}, buffer);
}
对此的任何帮助将不胜感激!提前谢谢你。
【问题讨论】:
-
将 col 乘以 16 并添加行。这是你的索引。
-
yValue * 16 + xValue。当然,这完全取决于您是否正确填充了缓冲区。 -
为什么不使用二维数组?
-
对索引进行了一些调整,这正是我想要的。非常感谢。有时基础知识只是被忽略了......
标签: c matrix int unsigned-char