//计划输出为二进制文件的类的定义
//主要存储二维数组randomnums信息,size存储了该二维数组的维度大小
struct myClass
{
int size;
float **randomnums;
myClass(int n) {
size = n;
randomnums = new float* [size];
for (int i = 0; i < size; i++) {
randomnums[i] = new float[size];
for (int j = 0; j < size; j++)
randomnums[i][j] = i + j + 1.0;
}
}
~myClass() {
for (int i = 0; i < size; i++)
delete[] randomnums[i];
delete[] randomnums;
}
};
//输出
byte* data_out;
myClass myclass_out(2049);
data_out = new byte[4 + myclass_out.size * myclass_out.size * 4];
int handle = 0;
//int转byte数组方法一
byte* tmpdata = (byte*)&myclass_out.size;
for (int k = 0; k < sizeof(int); k++)
data_out[handle++] = *tmpdata++;
//int转byte数组方法二,通过位运算
//data_out[0] = (byte)myclass_out.num;
//data_out[1] = (byte)(myclass_out.num >> 8);
//data_out[2] = (byte)(myclass_out.num >> 16);
//data_out[3] = (byte)(myclass_out.num >> 24);
for (int i = 0; i < myclass_out.size; i++)
for (int j = 0; j < myclass_out.size; j++) {
byte* pdata = (byte*)&myclass_out.randomnums[i][j];
for (int k = 0; k < sizeof(float); k++) data_out[handle++] = *pdata++;
}
ofstream ofs("C:/myClass.glb", ios::out | ios::binary);
ofs.write((char*)data_out, 4 + myclass_out.size * myclass_out.size * 4);
ofs.close();
//读入
ifstream ifs("E:/Houdini Projects/Terrain_Area_Partition/gdp.bpcg", ios::in | ios::binary);
int size;
ifs.read((char*)&size, 4);
myClass myclass_in(size);
byte* data_in = new byte[myclass_in.size * myclass_in.size * 4];
ifs.read((char*)data_in, myclass_in.size * myclass_in.size * 4);
ifs.close();
handle = 0;
for (int i = 0; i < myclass_in.size; i++) {
for (int j = 0; j < myclass_in.size; j++){
byte tmp_data[4] = { data_in[handle++], data_in[handle++], data_in[handle++], data_in[handle++] };
myclass_in.randomnums[i][j] = *((float*)tmp_data);
}
}