我有一些代碼,我試圖用於網絡通信從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或者它做了一些奇怪的截斷? –