Я хочу написать собственный двоичный файл для моего маленького игрового движка.Я работал с C #, и я знаю, как сделать это в C # с BitConvert или Convert.
Но по некоторым причинам мне нужно сделать то же самое в C ++.
Вот моя структура данных:
Mesh Position point3(x,y,z) type: float size: 4bytes *3 = 12bytes
Mesh Options point3(b1,b2,b3) type: bool size: 1byte *3 = 3bytes
Mesh Scale point3(x,y,z) type: int size: 4bytes *3 = 12bytes
Mesh Tag single type: string size: 8bytes *1 = 8bytes
Теперь у меня есть список неподписанных символов:
vector<unsigned char> binary_data;
И я могу использовать push, чтобы добавить в него отдельные байты и, наконец, записать его с помощью ofstream:
ofstream fout;
fout.open("file.bin", ios::binary | ios::out);
vector<unsigned char> binary_data;
binary_data.push_back(0x66);
binary_data.push_back(0xFF); // bool : true
binary_data.push_back(0x00); // bool : false
fout.write((char*)binary_data.data(),binary_data.size());
fout.close();
Моя проблема
Мне нужно преобразовать мои значения любого типа float, int, bool, uint, двухбайтового массива и добавить его в мой список векторов.
И снова получить их и преобразовать их обратно в исходное значение.
все смещения и размеры байтов известны.
Вот пример: в сцене есть две сетки ..
- Масштаб первого: point3 (10,5,15)
- Масштаб второго: point3 (25,0,5)
Теперь яполучить xyz и преобразовать их в 4 байта:
10 = > 00 00 00 0A
5 = > 00 00 00 05
15 = > 00 00 00 0F
25 = > 00 00 00 19
0 = > 00 00 00 00
5 = > 00 00 00 05
И я добавляю их в список binary_data
.
Как я могу преобразовать их в байтовый массив и обратно?