我的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/