我遇到了一个问题类型转换从我的嵌入式主板发送的值,该主板运行udp服务器到我的matlab udp客户端,当我尝试对uint32值的4个字节数据进行类型转换时,它没有显示正确的值。例如,我从服务器发送一个值(即1359151104),在matlab端我收到这个号码:1359200000。我使用的代码是: 每个mssgt获取4字节值的每个对应位置的所有内容并创建一个数组来生成所有值的数组,因为我总共收到153个值,否则我不会做outSet#(这样我得到一个包含所有值的大数组)。
outSet1 = uint32(mssgt(1:4:length(mssgt)-3));
outSet2 = uint32(mssgt(2:4:length(mssgt)-2));
outSet3 = uint32(mssgt(3:4:length(mssgt)-1));
outSet4 = uint32(mssgt(4:4:length(mssgt)));
outSet = uint32(2^0*outSet1 + 2^8*outSet2 + 2^16*outSet3 + 2^24*outSet4);
对于某些字节,我有负数,我在上面的代码之前有这个实现,但它也不起作用。
for mm = 1 : length(mssgt)
if mssgt(mm) < 0
mssg(mm) = int16(256) + int16(mssgt(mm));
else
mssg(mm) = int16(mssgt(mm));
end
end
我看不出我做错了什么。发生的错误是什么?