システムを Python から C++ に変換する作業を行っています。通常は Python を使用して実行されるstruct.unpack
(バイナリ文字列を数値として解釈する) アクションを C++ で実行できるようにする必要があります。整数値の場合、次のデータ型を使用して、これを (一種の) 機能させることができますstdint.h
。
struct.unpack("i", str) ==> *(int32_t*) str; //str is a char* containing the data
これは、リトル エンディアンのバイナリ文字列では適切に機能しますが、ビッグ エンディアンのバイナリ文字列では失敗します。>
基本的に、 struct.unpack でタグを使用するのと同等のものが必要です。
struct.unpack(">i", str) ==> ???
これを行うためのより良い方法があれば、私はすべての耳です。ただし、c++11 も、Boost 以外のサードパーティ製ライブラリも使用できません。struct.unpack(">f", str)
と のように floatとdouble を解釈できるようにする必要もありstruct.unpack(">d", str)
ますが、これを解決するときにそれを取得します。
注: この場合、マシンのエンディアンは無関係であることを指摘しておく必要があります。コードで受信するビットストリームは常にビッグ エンディアンであることを知っています。そのため、常にビッグ エンディアンのケースをカバーするソリューションが必要です。コメントでBoBTFishが指摘した記事は、解決策を提供しているようです.