我有一个消息的自定义二进制协议和二进制规范。二进制协议为每条消息添加一些标题。该消息相对较大,包含近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