1 / 1 / 3
Регистрация: 08.09.2009
Сообщений: 103
|
|
1 | |
Как считывать информация с файла по байтам15.10.2012, 07:20. Показов 4055. Ответов 20
Метки нет (Все метки)
У меня есть файл, выглядит как график, hex-вид :
00000001: 80 01 00 02 00 05 00 02 00 56 80 02 00 03 00 55 00000002: 56 00 00 04 22 00 88 00 00 05 87 00 80 03 25 00 первое слово 80 01 это координата Xи все слова начинающиеся на 80 это X второе слово 00 02 это координата Y третье слово 00 05 это значение переменной А в точке XY Далее идет чередование Y и A, и так до следующей координаты X Как в C++ считать его по словам размером в 2 байта и записать слова в динамический массив типа t[X]=A. Во всех значениях, кроме данных игриков записать A=0. Объяснила как могла. Помогите пожалуйста!
0
|
15.10.2012, 07:20 | |
Ответы с готовыми решениями:
20
Как считывать матрицу из файла? Как считывать данные из файла? Как считывать с файла и заполнять структуру? Как считывать с файла данные блоками? |
1 / 1 / 3
Регистрация: 08.09.2009
Сообщений: 103
|
|
15.10.2012, 07:40 [ТС] | 3 |
может и так, дело в том что значение Х известно, а вот количество Y в которых A не равно 0 нет
0
|
1 / 1 / 3
Регистрация: 08.09.2009
Сообщений: 103
|
|
15.10.2012, 07:47 [ТС] | 5 |
как бы объяснить. в слово 80 01 это координата х, точнее старший байт 80 это просто отличительный знак. на самом деле это Х=1. Далее идет слово значение координаты Y, в которой A=00 05h. Во всех значениях до этого Y= 00 02h A=0.Например при Y=00 01h A=0 и так далее чередуется до следущего слова начинающегося на 80. И вот мне надо записать в массив.
ну вот я никак не могу понять как считывать байты и составлять из них слова. Добавлено через 39 секунд текста нет, все мне давалось на словах
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||||||||||||
15.10.2012, 08:31 | 6 | ||||||||||||||||||||
Как вариант. Считать координату, как две строки (для примера) :
0
|
1 / 1 / 3
Регистрация: 08.09.2009
Сообщений: 103
|
||||||
15.10.2012, 08:40 [ТС] | 7 | |||||
спасибо! у меня есть код который это делает, я не могу разобраться как он это делает на примере файла в hex-виде. вот код:
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
15.10.2012, 09:50 | 8 | |||||
Вот этот код считает из файла, вашего вида, каждое слово (как значение int) в вектор. 80 заменяется на 00.
Код
0
|
1 / 1 / 3
Регистрация: 08.09.2009
Сообщений: 103
|
|
15.10.2012, 09:55 [ТС] | 9 |
там все координаты збозначаются 2 байтами, вложу пример файла, там все правильно
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
15.10.2012, 10:28 | 10 |
Я понимаю, что двумя, но вы сами написали в 5 посте, что для X первый байт только метка, на значение координаты не влияет. По идее координата Y не может быть больше 255, то есть первый байт всегда 0. Вы свой пример текста в файле (1 пост) сами придумали или из файла, выложенного в последнем посте, взяли? Я там таких координат Y (после координат X) не увидел.
Добавлено через 24 минуты Если там всё правильно, то что это:
0
|
1 / 1 / 3
Регистрация: 08.09.2009
Сообщений: 103
|
|
15.10.2012, 11:19 [ТС] | 11 |
В посте 1 пример файла придуман, настоящий файл на котором я пытаюсь понять код я выложила. Да в координате Х 80 это всего лишь метка, дальше идут чередование Y и значения A. И так до следующей метки
Добавлено через 47 минут Если там всё правильно, то что это: 0000000460: 00 62 01 78 00 66 01 7° │ 00 6C 01 84 00 68 01 85 Что за 7° ? 7° это 7С это word исправил, я не заметила
0
|
1 / 1 / 3
Регистрация: 08.09.2009
Сообщений: 103
|
|
16.10.2012, 04:23 [ТС] | 13 |
Это 5 координат Х, далее идет Y и значения А и это все надо вписать в массив, например Т[X][Y] = A. но загвостка в том, что количество X известно и количество Y известно, оно = 512, но те Y в которых А не равно 0 записаны в файле. Например Х=80 01,
далее Y=00 01 A=00 27 Y=00 02 A=00 66 Y=00 03 A=0 ..................... и так далее до Y=00 C0 A=00 8 И так далее до Х=80 02
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
16.10.2012, 06:01 | 14 |
С этими пятью, будем считать, что понятно. Дальше, через одну (до следующего X) идут координаты Y и значения A. Что с ними делать? Что делать с теми числами, которые идут до первого X? Как этот файл создавался? Что за данные в нём ? Координаты - это координаты чего? Цель извлечения данных из файла? Массив, с извлечёнными данными, будет как-то использоваться?
Добавлено через 1 минуту Откуда известно? Добавлено через 11 минут В файле всего 512 байтов. Как может быть X + Y = 512? На каждую координату идут по два байта, плюс значения А.
0
|
1 / 1 / 3
Регистрация: 08.09.2009
Сообщений: 103
|
|
16.10.2012, 07:54 [ТС] | 15 |
Числа которые идут до первого Х можно отбросить, они нужны для другого.
Что в нем зашифровано, это ионограмма, надеюсь это что-то скажет. формат создавался давно, меня ещё далеко в помине не было. Y известно потому что это конечное количество точек на графике, если представить как график.Или представим как прямоугольник, в котором длина это Х, а ширина это Y. Данный массив это главный массив программы, и он будет использоватьсчя везде где только можно.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
16.10.2012, 08:33 | 16 |
Как их может быть 512, если в файле всего 512 байт? Если по два байта на значение, то получается 256 значений. В них пять значений X, сколько то А, остальное Y. И как тогда значений Y может быть 512?
Хотелось бы и на этот вопрос ответ получить. Если вы не проясните задачу (в том числе и для себя), то вам никто не сможет помочь. Добавлено через 4 минуты И как такое задание, вообще, может говориться на словах? Хотелось бы услышать те слова... Вы уверены, что всё правильно поняли со слов?
0
|
1 / 1 / 3
Регистрация: 08.09.2009
Сообщений: 103
|
|
16.10.2012, 08:36 [ТС] | 17 |
я пытаюсь объяснить, но видать у меня это плохо выходит.\
то что я отправила это кусок огромного файла, на этом куске я проверяла "в ручную" работу кода, который выше в постах. Давайте оставим эту тему. Помогите пожалуйста понять тот код, он делает то что я пытаюсь получить, но я не понимаю как он это делает
0
|
1 / 1 / 3
Регистрация: 08.09.2009
Сообщений: 103
|
|
16.10.2012, 09:20 [ТС] | 19 |
Спасибо вам большое, что помучались со мной, а темку я создам
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
16.10.2012, 14:21 | 20 | |||||
Вот этот код делает то же самое, что и код, с которым вы пытаетесь разобраться. Помощи, я так понял, вам не дождаться. Очень трудно разобраться, если вопрос туманный. Файл, который этот код корректно обрабатыает, я прилагаю для проверки. От вашего (выложенного) он отличается тем, что убран символ '|' из части с данными.
Код
0
|
16.10.2012, 14:21 | |
16.10.2012, 14:21 | |
Помогаю со студенческими работами здесь
20
Как считывать из файла данные по 64 бита Как считывать из файла по одному слову Как считывать только числа из текстового файла? Как считывать из файла цифры не в char, а в int Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |