我正在将一个c++代码转换成python。C++代码读取二进制文件,然后将其转换成不同的字节数。在python中执行同样的操作时,我遇到了问题。有人能帮我吗?在
这里是C++代码:
if( bByteSwap ) // make big-endian
{
pHdr = (UDUMPHDR *)buf;
iAPID = pHdr->sHdr.ccsdsHdr.sW1.uAPID;
iType = pHdr->sHdr.ccsdsHdr.sW7.uFmtID;
iSeqCnt = pHdr->sHdr.ccsdsHdr.uiPktSeq;
for( BYTE *pB=buf; pB<buf+nSz; pB+=2 ) ByteSwap( pB, 2 );
}
else // already big-endian
{
::CopyMemory( buf1, buf, nSz1 );
for( BYTE *pB=buf1; pB<buf1+nSz1; pB+=2 ) ByteSwap( pB, 2 );
pHdr1 = (UDUMPHDR *)buf1;
iAPID = pHdr1->sHdr.ccsdsHdr.sW1.uAPID;
iType = pHdr1->sHdr.ccsdsHdr.sW7.uFmtID;
iSeqCnt = pHdr1->sHdr.ccsdsHdr.uiPktSeq;
}
这里,UDUMPHDR
是一个结构。我使用python中的ctypes创建相同的结构,并使用fileHandle.readinto(s)
函数从二进制文件中读取结构。有人能帮我说说什么是最好的方法吗?在
当前编写的Python代码:
^{pr2}$谢谢。在
您复制的大多数代码都是一种非常复杂的字节交换} 模块可以很容易地为您处理它,所以您不必担心它。在
int16_t
值的方法。^{真正的问题是使用实际布局读取实际的
TLEDUMPHDR
。 例如,您有一个具有以下布局的结构:你读的是小端音,写的是大端音。它的format是};因此我们得到:
^{pr2}$'ihh'
;大端号的标志是>
,小端号是{相关问题 更多 >
编程相关推荐