我的C++程序中有十六进制值的无符号字符数组:

unsigned char buff[] = {0x03, 0x35, 0x6B};

我想计算该数组的大小,以便可以使用以下函数在UART端口linux上发送它:
if ((count = write(file,buff,length))<0)
{
    perror("FAIL to write on exit\n");
}

如我所见,长度是整数,buff是一个可以在程序执行期间更改大小的数组。
谁能帮我怎么写。谢谢

最佳答案

您可以使用数组执行此操作:

size_t size = sizeof array;

与您的示例给出:
ssize_t count = write(file, buff, sizeof buff);
if (count < 0 || (size_t)count != sizeof buff) {
  perror("FAIL to write on exit\n");
}

注意:我使用C语义,因为write来自libC。

在C++中,可以使用模板来确保将sizeof与数组一起使用。
template<typename T, size_t s>
size_t array_sizeof(T (&array)[s]) {
    return sizeof array;
}

与您的示例给出:
ssize_t count = write(file, buff, array_sizeof(buff));
if (count < 0 || static_cast<size_t>(count) != array_sizeof(buff)) {
  perror("FAIL to write on exit\n");
}

关于c++ - C++无符号字符数组长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41376336/

10-14 16:26