Пакет расширения с утилитами (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
}