我有一個從C++程序發送的UDP包,我必須在Python中讀取它。我設法接收UDP包,但不幸的是它被編碼。 C++的數據的形式爲Python緩衝區解碼
struct packet{
double arg1
double arg2
double arg3
double arg4
int16_t arg5
};
我接收的數據是在總共42個字節長(這是也發送相同的長度)。也許這些數據在發送之前也會稍微改變,但我仍然試圖弄清楚。 所以我的問題是:讓我們假設發送數據的結構將完全如上所述。我怎麼能從緩衝區讀出來? (順便說一句,我使用Python 2.7.9)
THX已經
編輯:我發現一些有關的結構
void Send(const CrazyFliePacket& packet)
{
FMA::ByteBuffer p =
FMA::Encode((PACKET_TYPE)FMA_PACKET_TYPES::CRAZYFLIE) +
FMA::Encode((PACKET_VERSION)0) +
FMA::Encode(_seq++) +
packet.Encode();
_server->SendPacket(p.data(),p.size());
printf("Packet sent with %i bytes size\n",p.size());
}
類型有:
typedef unsigned short PACKET_TYPE;
typedef unsigned short PACKET_VERSION;
uint16_t _seq;
發送和接收的數據現在長度爲40個字節。
EDIT2:正確的解決方法是
print struct.unpack('<HHhddddh', data)
訪問編碼對象的優勢:怎麼了?這個C++代碼並不能說明'數據包'是如何編碼的。 – 2015-03-13 09:36:18
我添加了評論。 – Slaxx 2015-03-13 11:52:31