Загрузить в массив из бинарного файла |
Здравствуйте, гость ( Вход | Регистрация )
Загрузить в массив из бинарного файла |
Гость_One_* |
17.1.2011, 21:17
Сообщение
#1
|
Гости |
Заранее извините за глупый вопрос. У меня есть бинарный файл, в него последовательно записаны координаты точек (x, y) типа float. Теперь требуется извлечь данные в массив, но не как если бы я сразу извлекал всё в вектор, а по кускам, потому что их нужно еще преобразовать. Вот код
Проблема в том, что когда считываю "y" позиция в потоке не смещается, и следующее считывание "x" происходит из места, где хранилось предыдущее "y". Поэтому массив считывается перепутано. Помогите исправить, пожалуйста. |
|
|
igor_bogomolov |
17.1.2011, 22:07
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Видимо ошибка где то в другом месте. В том коде, что вы привели всё правильно.
Вот простейший тест ВыводЦитата x = 1.1 y = 2.2 Т.е. работает так как ожидается.x = 3.3 y = 4.4 x = 5.5 y = 6.6 x = 7.7 y = 8.8 P.S. то что я заменил файл на буфер значения для теста не имеет |
|
|
Гость_One_* |
18.1.2011, 1:08
Сообщение
#3
|
Гости |
Вы правы, дело не в этом. Вот такая странность творится. Дело в том, что массив, который хранится в файле, я записал через контейнер-вектор. Просто вставил вектор в поток. Когда я его считываю через вектор, опять же вектор вставляю в поток и все нормально считывается, все значения правильны. Когда же я считываю через цикл, то обнаруживаю, что в самом начале файла записался лишний элемент размером 4 байта, вот он и приводит к смещению всех значений. Но откуда взялся этот лишний элемент, не понимаю. Может это контейнер-вектор обозначил так свое начало?
|
|
|
Алексей1153 |
18.1.2011, 1:22
Сообщение
#4
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
а покажи значение этих байтов
|
|
|
BRE |
18.1.2011, 9:48
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
kwisp |
18.1.2011, 9:53
Сообщение
#6
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
|
|
|
Гость_Гость_* |
18.1.2011, 11:04
Сообщение
#7
|
Гости |
По такому принципу:
Первое число типа float порядка 1e-44, вроде бы так было. |
|
|
Гость_One_* |
18.1.2011, 11:12
Сообщение
#8
|
Гости |
Если более точно, то 6,16571e-44 типа float (4 байта), странно да? А может это на самом деле 4 байта типа int, которые неправильно "распознались".
|
|
|
igor_bogomolov |
18.1.2011, 11:16
Сообщение
#9
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 3:33 |