Иллюстрированный самоучитель по Mathematica 3/4

Пакет расширения с утилитами (Utilities). Работа с бинарными файлами (BinaryFiles).

Утилитами принято называть небольшие программы, в основном вспомогательного назначения. Они предназначены чаще всего для работы с файлами и памятью компьютера. Ряд таких утилит включен в пакет расширения Utilities, знакомству с которым и посвящен данный небольшой раздел.


В подпакете BinaryFiles имеются типовые функции для работы с бинарными файлами:

  • OpenReadBinary [ "filename" ] – открытие файла для считывания бинарных данных;
  • OpenWriteBinary["filename"] – открытие файла для записи бинарных данных;
  • OpenAppendBinary ["filename"] – открытие файла для добавления данных в конец;
  • ReadBinary [stream, type] – считывает бинарные данные из потока;
  • ReadBinary [ stream, expr ] – считывает из потока бинарные данные, типы которых определяются выражением ехрг.

ФункцииReadListBinary[filename,type], ReadListBinary[stream,type, n], ReadListBinary[stream,type] оперируют с данными в виде списков, а функция WriteBinary [stream, data] записывает данные в поток в бинарной форме.

Примеры применения этих функций представлены ниже:

<< Utilities`BinaryFiles`
  
data = N[Table[10^n, {n, -10, 10}]]
{1.x 10-10, 1.x 10-9, 1.x 10-8, 1.x 10-7, 1.x 10-6,
0.00001, 0.0001, 0.001, 0.01, 0.1, 1., 10., 100.-,
 1000., 10000., 100000., 1.x 106, 1.x 107, 1.x 108, 1.x 109, 1.x 1010}
  
stream = OpenWriteBinary["binarytest"]
OutputStream["binarytest", 4]
WriteBinary[stream, data]
Close[stream]
binarytest
  
ReadListBinary["binarytest", Double]
{1.x10-10, 1 .xlO-9, 1 .x10-8, 1.x 10-7, 1.x 10-6, 0.00001,
 0.0001, 0.001, 0.01, 0.1, 1., 10., 100., 1000., 10000., 100000.,
 1.x 106, 1.x 107, l.xl08, 1.x 109, 1.x 1010}
  
ReadListBinary["binarytest", Signedlntl6, 5]
{15835, 31967,-9769, -16965, 15889}

Для конвертирования выражений ехрг в байтовый формат служат функции ТоBytes[expr] и ToBytes[expr, type].

Например:

ToBytes[-34.3421435]
{192, 65, 43, 203, 91, 128, 0, 0}
  
ToBytes[-34.3421435, CString]
{45, 51, 52, 46, 51, 52, 50, 49, 52, 51, 53, 0}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.