Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/35: Рейтинг темы: голосов - 35, средняя оценка - 4.54
Maxximus75

Массив бинарного файла, чтение и конвертация.

01.05.2011, 21:21. Показов 6822. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
3 день бьюсь ничего не выходит. Гуру помогите.
Есть бинарный файл, каждая строка содержит 37 байт, разбиваю файл по 37 байт, получаю 15 строк, структура известна:
1 строка: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C9 00 7A 00 00 00 00 00 98 4A 44 0F 29 3E 3A 19 32 C0 7C 00 00

первые 19 байт пустышки, с 20-го по 23 й байт номер по порядку, с 24 по 25 координата, с 26 по 27 2 координата, итд.

Считал всю строку в массив байт, но как извлечь из нее с нужным смещением и количеством считываемых байт не пойму, и далее привести считываемые данные в читабельный вид.

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
            Dim fs As FileStream = File.OpenRead(path)
            fs = File.OpenRead(path)
            Dim b(36) As Byte
            Do While fs.Read(b, 0, b.Length) '> 0
                Dim binReader As New BinaryReader(fs)
                'binReader.BaseStream.Seek(0, SeekOrigin.Begin)
                Dim count As Object = binReader.ReadBytes(37)
                Dim lkupDir As Byte = binReader.Read(count, 24, 2)
                lkupDir = binReader.ReadDouble()
                lkupDir = lkupDir * 0.00000011920929 ' конвертим в правильные координаты
            Loop
            fs.Close()
Ps: строго не судите за код я только учусь, все мы когда то с чего то начинали!

Добавлено через 6 часов 52 минуты
По первому вопросу разобрался:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            Dim fs As FileStream = File.OpenRead(path)
            fs = File.OpenRead(path)
            'Dim temp As UTF8Encoding = New UTF8Encoding(True)
            ss = (fs.Length / 37) - 1
            For d = 0 To ss
                Dim binReader As New BinaryReader(fs)
                Dim Пусто As Object = binReader.ReadBytes(20)
                Dim Номер As Object = binReader.ReadBytes(4)
                Dim Долгота As Object = binReader.ReadBytes(4)
                Dim Широта As Object = binReader.ReadBytes(4)
                Dim Скорость As Object = binReader.ReadBytes(1)
                Dim Тип As Object = binReader.ReadBytes(1)
                Dim Направление As Object = binReader.ReadBytes(1)
                Dim Типнаправления As Object = binReader.ReadBytes(1)
                Dim Исправления As Object = binReader.ReadBytes(1)
            Next
            fs.Close()
Но второй похоже по справкам не осилить или ткните ссылкой.

например долгота: в хексе 98 4A 44 0F это Signed Int 256133784

в VB долгота массивом 152; 74; 68; 15. как этот массив привести к виду 256133784
 Комментарий модератора 
Для VB.NET есть отдельный раздел. Тема перенесена.
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2011, 21:21
Ответы с готовыми решениями:

Чтение структуры из бинарного файла в массив
Структура выглядит так: struct StandardBook { char ISBN; //регистрационный номер книги International Standard Book Number char...

Чтение данных из бинарного файла в массив
Доброго всем времени суток. Мне нужно было прочитать из бинарного файла данные в массив int data; С этим я справился, но не...

Чтение бинарного файла с 16-ричными числами в массив - предоставление и очищение памяти
Программа вылетает, переполнение стека.. Имеется бинарный файл с 16-ричными числами, по 40 штук в строке вида "4d" через...

4
16 / 16 / 1
Регистрация: 08.03.2011
Сообщений: 37
01.05.2011, 23:04
Лучший ответ Сообщение было отмечено как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Dim i As Integer
Dim Num As Long
Dim CoordA As Long
Dim CoordB As Long
Dim Speed As Byte
Dim Typ As Byte
Dim Dirt As Byte
Dim TypeDirt As Byte
Dim Correct As Byte
Dim a_Data(36) As Byte
 
Open "test.txt" For Binary As 1
Do
    Get #1, , a_Data()
        Num = a_Data(20) + a_Data(21) * 256 + a_Data(22) * 256 ^ 2 + a_Data(23) * 256 ^ 3
        CoordA = a_Data(24) + a_Data(25) * 256 + a_Data(26) * 256 ^ 2 + a_Data(27) * 256 ^ 3
        CoordB = a_Data(28) + a_Data(29) * 256 + a_Data(30) * 256 ^ 2 + a_Data(31) * 256 ^ 3
        Speed = a_Data(32)
        Typ = a_Data(33)
        Dirt = a_Data(34)
        TypeDirt = a_Data(35)
        Correct = a_Data(36)
        Debug.Print "Номер по порядку #" & i & ": " & Num
        Debug.Print "Долгота #" & i & ": " & CoordA
        Debug.Print "Широта #" & i & ": " & CoordB
        Debug.Print "Тип #" & i & ": " & Typ
        Debug.Print "Направление #" & i & ": " & Dirt
        Debug.Print "Тип направления #" & i & ": " & TypeDirt
        Debug.Print "Мсправления #" & i & ": " & Correct
    Loop Until EOF(1)
Close #1
3
Maxximus75
01.05.2011, 23:28
В Microsoft Visual Studio 2010, Open "test.txt" For Binary As 1 отсутствует заменил
на
PureBasic
1
2
3
DO WHILE fs.READ(a_Data, 0, a_Data.Length)
 
loop
DeadAnyKey спасибо огромное
16 / 16 / 1
Регистрация: 08.03.2011
Сообщений: 37
01.05.2011, 23:34
Пардон, в VB6 ваял
1
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 3
25.04.2013, 17:09
Здравствуйте!
У меня похожая проблема. Имеется бинарный файл, в нем содержится 300 записей (1 строка) по 4 байта (типа float).
Считать информацию в массив байтов получается, но как преобразовать затем в переменные типа Single не знаю (на что умножать?).
Подскажите пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.04.2013, 17:09
Помогаю со студенческими работами здесь

Чтение бинарного файла - чтение первых 9 байт
Есть код, который читает первые 9 байт бинарного файла(заголовок записи) void ATS44Encoder::FileEncode() { QFile* file = new...

Внешняя сортировка бинарного файла (чтение после конца файла невозможно)
Помогите отладить программу, не вижу, что здесь можно сделать. Похоже, курсор файла где-то в коде сортировки доходит до конца, но потом все...

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

Чтение из бинарного файла
Здравствуйте. Столкнулся с проблемой, не до конца понимаю от чего она возникает и как решить её. Открываю для чтения файл в бинарном...

Чтение бинарного файла.
Здраствуйте, форумчане. Сегодня столкнулся с такой проблемой: Есть бинарник и в нем есть текст возьмем к примеру слово "Door" ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru