#c #binary
#c #двоичный
Вопрос:
Я пытаюсь записать данные в двоичном формате.
В настоящее время у меня есть эта функция, которая работает с CStdioFile
классом в Visual Studio:
CStdioFile data(_this->output_dir L"\" saveFileName ".binary", CFile::modeCreate | CFile::typeBinary | CFile::modeReadWrite);
//some code
data.Write(amp;x, 4);
data.Write(amp;y, 4);
data.flush();
data.close();
Но этот класс недоступен в Linux, и я изо всех сил пытаюсь заставить свой код создавать точно такой же результат, который CStdioFile
создавал бы using fstream
или любую другую Linux-совместимую библиотеку.
Это код, который я пытаюсь использовать для записи того же amp;x
и amp;y
данных fstream
, но выходной файл отличается:
fstream data(of "\" saveFileName ".binary", ios::out | ios::binary | ios::trunc);
data.write((const char*)amp;x, sizeof(float));
data.write((const char*)amp;y, sizeof(float));
data.close();
На CStdioFile
выходе я получаю двоичный файл в шестнадцатеричном кодировании со столбцами из 4 символов
bc68 b44a 3d82 7d4f 70af 524a 0aba 174f
d84f f349 3e07 af4e f0f7 8c49 6c4c 484e
80d9 7a48 acab 384d 2855 ac4a bae3 724f
(...)
На iostream
выходе я получаю это:
NìF’HU‹uMž½JÈI˜OÉÝ^Jnã8Ou2ýIjËN^WIÄ¥hNVH²HÿiˆM6IõuÈN‰(I)¹N ™¡HÚù1NŸ]DH¸CØM€ÿnGÈ›MLu)I¡ºNÁPI¶u¯NÞ…H„NÕðQH7çM(¨gGÇ!ÿLèì¦HÀamp;ÜNôšHšØËNÈ3H=uCNÚ´GèíMÜ.ÛF6‰M˜h›HöÌN’HÓ±ÀNxöôG0‰!NîˆÀG:íýMPsÔF¨MàöHò‘NðïùG¢†Nð¦oG:Õ NÀšG”ŒœM`71Fx‰¾L@NûGü‡N CìGà~NpFG”òÔM «G"_§MðÅ F4¯¸L`[G`znN@½„GÂÐN(...)
Комментарии:
1. Чей
CStdioFile
класс вы используете?2. И как это связано с тегом CSV? Этот класс настолько поврежден, что он создает текстовый файл с разделителями, когда вы запрашиваете у него двоичный файл?
3. @JaMiT выглядит как другой формат вывода. CStdioFile имеет шестнадцатеричное представление двоичного файла в качестве выходных данных, а fstream содержит только символы
4. В настоящее время у меня есть эта функция, которая работает с классом CStdioFile в Visual Studio
5. @EdisAhmethodzic — С помощью CStdioFile я получаю на выходе двоичный файл в шестнадцатеричном кодировании со столбцами из 4 символов — Вы получаете столбцы в двоичном файле? Попробуйте свой код Linux под Windows без использования CStdioFile — какие результаты вы получите тогда? (Честно говоря, это должно было быть первым, что вам нужно было попробовать)