unsigned char ucvalue[32][32][32]; //データ本体がこの中にあるとする // ヘッダー書き出し short size3[3] = {32, 32, 32}; ChangeEndian(&size3[0], sizeof(short)); //byteをひっくり返す ChangeEndian(&size3[1], sizeof(short)); ChangeEndian(&size3[2], sizeof(short)); fwrite(size3, sizeof(short), 3, pFile); // 本体部分書き出し for (int z = 0; z < 32; z++) for (int y = 0; y < 32; y++) for (int x = 0; x < 32; x++) fwrite(&ucvalue[z][y][x], sizeof(char), 1, pFile); |
// 関数定義 (ポインタ位置、byte長) void ChangeEndian(void *pHead, unsigned int length); // 関数本体 void ChangeEndian(void* pHead, unsigned int length){ unsigned char *pBuf = new unsigned char [length]; // 一時データ置き場 // 一時データ置き場にコピー for (unsigned int i = 0; i < length; i++) pBuf[i] = *((unsigned char*)pHead + i); // 一時データ置き場から逆順にコピー for (unsigned int i = 0; i < length; i++) *((unsigned char*)pHead + i) = pBuf[length - 1 - i]; delete pBuf; // 一時データ置き場開放 } |