編集:このコードが私が思っていることをするかどうかはわかりません。誰かがそれをテストする方法を教えてもらえますか? つまり、メイン関数のバッファはどのように見えるべきですか? バッファには、タイプ (16 ビット)、長さ (32 ビット) の順序で 2 つのフィールドのデータがあると想定しています。バッファはファイルから読み込まれ、各フィールドはスペースで区切られていると想定しています。フィールドはネットワーク バイト オーダーで格納されており、それらを読み取るときにホスト バイト オーダーに変換し直す必要があります。
コードがファイルから内容を読み取り (ネットワーク バイト順である必要があります)、その内容をホスト バイト順で表示することを期待しています。型変換とファイル内のネットワーク バイト オーダーについて少し混乱しているため、テストに使用する値がわかりません。また、私のコードが正しく書かれているかどうかもわかりません。この種のことをしたり、そのような変換についてもう少し知っている人は、私のコードが正しいかどうか教えてくれますか?
コードは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printRecords(char *buffer)
{
unsigned int recordType;
unsigned long recordLength;
char *data;
char *index;
if (!buffer)
printf("Empty buffer\n");
while(*buffer)
{
memcpy(&recordType,(const void *) buffer,2);
buffer += 3;
recordType = ntohs(recordType);
printf("Record type normal: %u\n",recordType);
memcpy(&recordLength,(const void *) buffer,4);
buffer += 5;
recordLength = ntohl(recordLength);
printf("Record Length normal: %l\n",recordLength);
break;
}
}
void main()
{
char * buffer = "0000000000000001 00000000000000000000000000000001";
printRecords(buffer);
}