我有一个大小为 1500 的缓冲区。在该缓冲区中,我需要检查 15 个字节是否全为零(从 100 到 115)。我们怎样才能做到这一点(如果我们不使用任何循环)?数据的类型是“unsigned char”,实际上它是一个unsigned char数组。
平台:Linux、C、gcc 编译器
使用memcmp()是否正确?我正在从智能卡读取一些数据并将它们存储在缓冲区中。现在我需要检查最后 15 个字节是否连续为零。我memcmp()在这里提到是因为我需要一种有效的方法;智能卡读取已经花费了一些时间。
或者按位比较是否正确。请建议。
unsigned char buffer[1500];
...
bool allZeros = true;
for (int i = 99; i < 115; ++i)
{
if (buffer[i] != 0)
{
allZeros = false;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
。
static const unsigned char zeros[15] = {0};
...
unsigned char buffer[1500];
...
bool allZeros = (memcmp(&buffer[99], zeros, 15) == 0);
Run Code Online (Sandbox Code Playgroud)