1
我的機器工作在小端。 我必須閱讀使用C + + std :: ios ::二進制一些文件與大端編碼。有沒有什麼標準和快速的方法來做到這一點? 就目前而言,看了原始數據後,我做到以下幾點:閱讀用bigendian編寫的文件
(讀取double)
char raw [8];
double d = 0; //maybe initialization is not needed
file.read(raw,8); //4 for an int
for(int k = 0; k < 8; k++) {
memcpy((void *)(((char *)(&d))+k), (const void *)(raw+j+7-k), 1);
}
(讀整數)
char raw [4];
file.read(raw,4); //4 for an int
int i = (raw[j] << 24) | (raw[j+1] << 16) | (raw[j+2] << 8) | raw[j+3];
'人'ntohl'人htonl' –
另外'的sizeof(int)的',而不是(很可能不正確的)'4',和''而不是'8'的sizeof(雙)。 –
@WilliamPursell由於他讀取一個文件,4是好的。它需要被轉換爲適合目標架構的東西,但我同意。 – JustSid