【发布时间】:2017-08-31 22:12:36
【问题描述】:
我有一些代码试图用于网络通信,以将信息从 c++ 提取到 MATLAB。我正在使用来自 Mathworks 开放交换的 pnet 程序(来自 c 的 mex 文件):https://www.mathworks.com/matlabcentral/fileexchange/345-tcp-udp-ip-toolbox-2-0-6?s_tid=answers_rc2-2_p5_MLT
在我的接收端,我期望接收 int8,然后我将其类型转换为 uint8。因此,对于每个接收到的字节,我期望 0-255 作为值。
我注意到我在接收端收到大量 127 的一些差异,并通过一些基本调试发现对于我从 128-255 发送的每个值,我的接收代码(在 pnet 接收调用之后立即)是显示 127。
因此,我认为 pnet.c 文件中可能存在错误,导致值被截断为 7 位最大值,而不是显示完整的 uint8 范围。
关于为什么会发生这种情况的任何想法?我主要是一个 matlab 用户,并没有花太多时间在数据类型转换上,所以我觉得这里有点超出我的深度。
接收返回错误/有趣错误字符的代码:
data = pnet('read',number of bytes to read,'noblock')
【问题讨论】:
-
你怎么知道它不会发生在发送端?
-
请向我们展示您使用该库的 MATLAB 代码。
-
如果你将
int8 -1“转换”成uint8,MATLAB 会像 C 那样做它并给你 255 还是会做一些奇怪的截断? -
@4386427 我也可以访问传输端字节 - 所以我可以检查它们以了解我通过 UDP 套接字发送的内容
-
@AndreKampling 我目前在另一个盒子上,无法访问该代码段。我稍后会尝试转移它