На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 53,
участников - 7 [ Edd, Slavik, sergsib, Simon, Evpator, zabor, autosat]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Прочее —› Как конвертировать текст в бинарник? 
Портативные Си-Би радиостанции в нашем магазине


Беркут Hunter
руб.

Егерь 3
руб.

President Randy II P
руб.

Турист 3
руб.

Штурман 80
руб.
Автор Сообщение
XOR
Участник
Offline4.0
с янв 2007
...
Сообщений: 1313

Дата: 12 Апр 2016 23:13:30 · Поправил: XOR (13 Апр 2016 01:43:50) #  

справился сам
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 13 Апр 2016 23:57:57 · Поправил: Sinus (14 Апр 2016 00:12:55) #  

Для интереса попробовал решать такую задачку в программе MathCad-14 :-). Получилось, так как там имеются неплохие встроенные функции чтения/записи файлов и преобразования строковых переменных в числовые и наоборот (правда, встроенные функции там могут заметно меняться от версии к версии). На всякий случай, описываю результаты опытов, вдруг кому-нибудь ещё будет интересно:

Сначала в исходном файле надо удалить лишние столбцы таблицы и сохранить нужную текстовою таблицу hex-кодов как обычный файл .txt; вот так выглядит его начало

Вот маткадная прога для преобразования его в бинарник:


Увеличить


Видно, что встроенной командой чтения READFILE создался двумерный массив А, но те элементы таблицы, которые имели вид десятичных цифр, преобразовались не в текстовые символы, а в числа. Поэтому мы преобразуем А в массив В с помощью встроенных функций работы со строками, так что элементы массива B принимают однотипный строковый вид "0xxh", где xx это hex-код элементов из исходной текстовой таблицы.

Встроенная функция str2num позволяет преобразовывать символы "0xxh" в числа; таким путём мы создаём из рядов матрицы В одномерный массив чисел C. Укорачиваем его, если нужно, до нужной длины (L3). И записываем эти числа в 16-ричном форме в бинарный файл (т.е. как последовательность байтов) встроенной функцией записи WRITEBIN; вот так выглядит начало получившегося бинарника.

---------

Аналогично решается и обратная задачка: преобразование байтов какого-либо файла в текстовую таблицу с hex-кодами (16-ричное представление байтов); вот маткадная прога для такого преобразования "бинарника" в файл .txt:


Увеличить


Видно, что встроенной командой чтения READBIN создался одномерный массив А, в котором байты прочитанного файла представлены целыми десятичными числами в диапазоне 0 - 255. На основе встроенной функции num2str мы сделали свою (пользовательскую) функцию Big(x) которая преобразует целое число из диапазона 0 - 15 в hex-символ. Она вместе со встроенной функцией concat, объединяющей строки символов в одну символьную строку, используется далее в пользовательской функции DecNum2HexStr, которая преобразует числа из А в hex-коды байтов. В итоге, строится одномерный массив B, элементами которого являются строки, содержащие по 16 штук hex-кодов байтов, разделённых пробелами. Этот массив символов В записывается в текстовый файл командой WRITEPRN; вот так выглядит его начало. В принципе, не сложно добавить в прогу и вывод hex-нумерации байтов в начале каждой строки txt-файла.

(Чтобы, для проверки, полученный так файл .txt преобразовать указанной первой маткадной прогой обратно в "бинарник", надо удалить в .txt все текстовые комментарии, добавленные Маткадом, и удалить кавычки; например, "Блокнотом" в режиме автоматической замены кавычек пробелом; вот так будет выглядеть начало очищенного файла .txt. Аналогично можно вручную печатать в "Блокноте" hex-коды любых байтов, которые затем маткадная прога запишет в виде "бинарника"; почти в духе старых добрых времён, когда "софт" для самодельных ЭВМ набивали побайтно вручную :-)
XOR
Участник
Offline4.0
с янв 2007
...
Сообщений: 1313

Дата: 14 Апр 2016 07:40:49 #  

там все оказалось несколько сложнее, 3FFF байт разбитых по 16 будет 1024 строк, а в файле их 1035 или что то около того, те были повторяющиеся строки. пришлось писать парсер который находил конец строки, вытаскивал адрес блока, конвертил текст в бинарник и распихивал байты по их адресам.
walik55
Участник
Offline1.4
с июл 2009
Санкт-Петербург
Сообщений: 124

Дата: 14 Апр 2016 09:26:22 #  

Сами себе задание даете, сами исполняете. Это, конечно, хорошо, но из Вашего поста я так и не понял что во что Вы преобразовать хотели? Не знаю как Вы, но я бы вырезал ёкселем нужные строки/столбцы, сохранил файл в csv формате, а потом написал меленькую такую программочку на С, бейсике, питоне, перле (ненужное зачеркнуть), и получил файл в какой мне нужно кодировке безо всяких ухищрений с маткадом. Кажется, к этому Вы уже сами пришли, коли сообщили, что пришлось городить парсер.
 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
Начало
Средства связи, рации. Купить радиостанции Motorola, Yaesu, Vertex, приемники, антенны.
Время загрузки страницы (сек.): 0.041; miniBB ®