我有一些代码,我试图用于网络通信从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_MLTC代码截取到7位最大值
在我的接收端,我期待收到int8,然后我将它作为uint8的类型转换。因此,对于每个接收到的字节,我期望0-255作为值。
我注意到一些差异,我在接收端收到很多127,并通过做一些基本调试发现,对于我从128-255发送的每个值,我的接收代码(在pnet接收呼叫后立即发送)显示127.
因此,我认为pnet.c文件中的某些内容可能会导致值被截断为7位最大值,而不是显示完整的uint8
范围。
有关为什么会发生这种情况的任何想法?我主要是一个matlab用户,并没有花太多时间在数据类型转换上,所以我觉得这里有一点我的深度。
接收代码,返回坏/有趣的错误性质:
data = pnet('read',number of bytes to read,'noblock')
你怎么知道它不会在发送端发生的呢? – 4386427
向我们展示您的使用库的MATLAB代码。 –
如果你把'int8 -1'转换成'uint8',MATLAB是否像C一样做并给你255或者它做了一些奇怪的截断? –