ホスト (CPU 依存) とネットワーク (ビッグ エンディアン) の間のバイト オーダーの変換に問題があります。これらは、私の問題を解決する可能性があることがわかったすべての API (Linux の場合は "arpa/inet.h" にあります) です。
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
1 つのことを除いて、符号なし整数(2 バイトまたは 4 バイト) のみを処理します。
では、符号付き整数のケースを処理する方法はありますか? つまり、以下の機能(API)をどのように実装すればよいのでしょうか?
int32_t htonl(int32_t hostlong);
int16_t htons(int16_t hostshort);
int32_t ntohl(int32_t netlong);
int16_t ntohs(int16_t netshort);