![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Гость_One_* |
![]()
Сообщение
#1
|
Гости ![]() |
Заранее извините за глупый вопрос. У меня есть бинарный файл, в него последовательно записаны координаты точек (x, y) типа float. Теперь требуется извлечь данные в массив, но не как если бы я сразу извлекал всё в вектор, а по кускам, потому что их нужно еще преобразовать. Вот код
Проблема в том, что когда считываю "y" позиция в потоке не смещается, и следующее считывание "x" происходит из места, где хранилось предыдущее "y". Поэтому массив считывается перепутано. Помогите исправить, пожалуйста. |
|
|
igor_bogomolov |
![]()
Сообщение
#2
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
Видимо ошибка где то в другом месте. В том коде, что вы привели всё правильно.
Вот простейший тест ВыводЦитата 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_* |
![]()
Сообщение
#3
|
Гости ![]() |
Вы правы, дело не в этом. Вот такая странность творится. Дело в том, что массив, который хранится в файле, я записал через контейнер-вектор. Просто вставил вектор в поток. Когда я его считываю через вектор, опять же вектор вставляю в поток и все нормально считывается, все значения правильны. Когда же я считываю через цикл, то обнаруживаю, что в самом начале файла записался лишний элемент размером 4 байта, вот он и приводит к смещению всех значений. Но откуда взялся этот лишний элемент, не понимаю. Может это контейнер-вектор обозначил так свое начало?
![]() |
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2944 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
а покажи значение этих байтов
|
|
|
BRE |
![]()
Сообщение
#5
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#6
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Гость_Гость_* |
![]()
Сообщение
#7
|
Гости ![]() |
По такому принципу:
Первое число типа float порядка 1e-44, вроде бы так было. |
|
|
Гость_One_* |
![]()
Сообщение
#8
|
Гости ![]() |
Если более точно, то 6,16571e-44 типа float (4 байта), странно да? А может это на самом деле 4 байта типа int, которые неправильно "распознались".
|
|
|
igor_bogomolov |
![]()
Сообщение
#9
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 15.7.2025, 1:43 |