Unix(big endian)代码和linux上的相同代码(little endian),创建不同的输出直径文件

PU.*_*PU. -3 c c++ ace diameter-protocol

我们有一个Unix代码来创建.xml文件中的直径文件作为输入.当我们转移到Linux平台时,我们需要创建相同的实用程序,代码已成功编译但实用程序没有按预期创建输出文件内容,因为每个字节都会反转位,我认为它是因为Linux是小端.

要写入输出文件的消息块格式为:

ACE_Message_Block* mb = m_pReqMsgBlock;
while (mb) {
                out.write(mb->rd_ptr(), mb->size());
                mb = mb->cont();
           }
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议可以添加多少额外的代码,以便可以以预期的方式写入字节?

Ris*_*aje 5

您必须将大端格式转换为小端格式.这必须分别对结构中的16位和32位值进行.

功能,如htonshtonl可用于分别将16位和32个整数.

转换数字后,可以通过write函数写入数字.