我有一個消息的自定義二進制協議和二進制規範。二進制協議爲每條消息添加一些標題。該消息相對較大,包含近50個不同的字段。我的要求是在linux 2.6.x上用c或C++中的gcc編譯器僅解析二進制消息中的2個字段。解析C中的二進制數據
一位開發人員創建了一個表示標題的類,另一個表示該消息的C++類。收到消息後,他只是在字節有效載荷上使用static_cast來取回消息類。一旦他獲得了消息對象類,他只需使用pointerToMessage.getFieldName()來獲取數據。
上段的更正。開發人員創建了一個結構,而不是該消息的類。該結構使用gcc的__attribute __((__ packed__))。
我的問題是,將使用static_cast結果在整個消息得到解析或解析發生在訪問時間,例如,在pointerToStruct.fieldName?另外,他定時進行了2次操作,發現幾乎沒有時間做static_cast,在這裏大約需要120微妙的時間通過pointerToStruct.fieldName來訪問字段。爲什麼要進入一個領域需要很長時間?
爲什麼static_cast會執行解析? – Pubby 2011-12-27 22:01:56
我很抱歉,因爲我不是C++開發人員,而且編碼人員不可用。因此,上面的問題。那麼,解析是在訪問時發生的嗎? – Jimm 2011-12-27 22:06:56
@Jimm:到目前爲止您所描述的任何內容都涉及解析。 – ildjarn 2011-12-27 22:07:41