c++ - 从 TCP 连接接收负数
问题描述
目前我有一个 Arduino 使用 client.write() 一个一个发送 8 个字节。这意味着值的范围是 0-255。
我的 C++ 应用程序与 Arduino 有一个 TCP 套接字连接,并使用以下代码接收字节:
#define DEFAULT_BUFLEN 8
struct SensorData{
int frontSensor;
int backSensor;
int leftSensor;
int rightSensor;
};
SensorData result{};
char recvbuf[DEFAULT_BUFLEN];
int recvbuflen = DEFAULT_BUFLEN;
socketIdMicroprocessor = recv(clientSocket, recvbuf, recvbuflen, 0);
if (socketIdMicroprocessor > 0) {
result.frontSensor = (int) recvbuf[0] + (int) recvbuf[1];
result.backSensor = (int) recvbuf[2] + (int) recvbuf[3];
result.leftSensor = (int) recvbuf[4] + (int) recvbuf[5];
result.rightSensor = (int) recvbuf[6] + (int) recvbuf[7];
}
一切运行良好,除了我在阅读结果时得到的值。例如 frontSensor 的结果有时是 -180。这应该是不可能的,因为发送的所有值都是正数和 0-255。
我希望所有值都是 0-510,有人能解释为什么我在这里得到否定吗?
解决方案
char recvbuf[DEFAULT_BUFLEN];
应该:
unsigned char recvbuf[DEFAULT_BUFLEN];
使演员阵容为int
0-255。
推荐阅读
- vue.js - 如何为 Vuepress 的特定页面使用自定义布局?
- javascript - 单击引导程序 4 中的切换按钮后,值未返回
- javascript - 无法访问 Javascript 数组中的元素
- javascript - Google Script - 从下拉列表中发送电子邮件
- javascript - 有没有什么方法可以使 html 表单中禁用字段的数据不显示在下载的 txt 文件中?
- javascript - 在这种情况下 return computerPick[randomPick] 做什么?
- c# - C#如何使用switch语句在多维数组中设置列?
- django - 仅使用模型中一个对象的主键将 Django HTML 模板呈现为 PDF
- mongodb - 在 mongodb 中跟进
- c# - 查找与给定路径对应的 Blazor 组件类