【发布时间】:2019-06-26 14:10:01
【问题描述】:
我使用 Qt 串口通过串口发送命令。该命令包含一个带符号的 16 位整数 (xx),范围从 -4096 到 4096,高字节先发送。命令创建如下:
int16_t xi = 0;
for (int i=0; i<280; i++){
xi = i;
// index = 0 1 2 3 4 5
// command = {'A','w','x','x','L','H'}
unsigned char command[6] = {'A','w','x','x','L','H'};
command[2] = xi >> 8;
command[3] = xi & 0xFF;
int len = strlen((char*)command);
qDebug()<<"strlen: "<<len;
}
该命令适用于除 0 到 256 之间的所有值。我不明白为什么我会得到一个长度为 2 的字符串来表示 0 到 256 之间的值?我做错了什么?任何帮助表示赞赏。
编辑:我如何更改 command[2] = xi >> 8;(或其他部分)以避免截断并获取 -4096 和 4096 之间所有整数的完整命令?
【问题讨论】:
-
strlenfrom en.cppreference.com/w/cpp/string/byte/strlen : 返回给定字节串的长度,即str指向的字符数组中第一个元素最多到和不包括第一个空字符。如果 str 指向的字符数组中没有空字符,则行为未定义。
标签: c++ qt byte endianness