在C中,我試圖選擇結構的特定成員並將其打印出來。我想知道,這種操作的建議格式是什麼?我嘗試了幾乎所有我能想到的。我似乎無法將其限制爲該結構的特定chunk
成員。fread fseek只有C中的struct成員
fseek(in, sizeof(d.contents.datas.chunk), SEEK_SET);
fread(&ch, 1, 1, in);
fprintf(out, "%02x", (int)(ch & 0x00FF));
看來我可以得到所有的結構數據,或只有一個字符。出於某種原因,數據也不是正確的,例如bytes
應該是實際的bytes
,但它的出現爲1
。很顯然,這個結構的數據打印方式有些問題。這可能是大endian vs小endian嗎?我知道我正在訪問的文件是big endian。
的結構林訪問如下:
struct chunkInfo
{
int chunkInformation;
int bytes;
union
{
struct
{
long size;
char chunk[1];
} datas;
} contents;
};
#pragma pack(忽略endian) –
是的,如果你在一個intel架構上並且接收到big endian的數據,你需要轉換它。查看例如'hton'和'ntoh'。 –
通常,使用像json或xml這樣的ascii格式進行網絡數據傳輸可能是最安全的。如果發送機器使用64位整數,但使用32位呢?等 –