101 lines
4.2 KiB
HTML
101 lines
4.2 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<title>binary</title>
|
||
</head>
|
||
|
||
<body>
|
||
<h1>binary</h1>
|
||
|
||
<p>Команда вставляет и извлекает поля из двоичных строк.</p>
|
||
|
||
<pre>
|
||
<strong>binary</strong> <strong>format</strong> <em>formatString</em> ?<em>arg</em> <em>arg</em>...?
|
||
<strong>binary</strong> <strong>scan</strong> <em>string</em> <em>formatString</em> ?<em>varName</em> <em>varName</em>...?
|
||
</pre>
|
||
|
||
<h2>ОПИСАНИЕ</h2>
|
||
|
||
<p> Команда <strong>binary</strong> предоставляет средства для
|
||
манипулирования двоичными данными. Первая из форм команды
|
||
конвертирует обычные Tcl-значения <em>arg</em> в двоичное
|
||
число. Например, вызванная с аргументами <strong>16</strong> и <strong>22</strong>,
|
||
она вернет 8-байтовое двоичную строку, состоящую из двух
|
||
4-байтовых чисел, представляющих соответственно <strong>16</strong> и
|
||
<strong>22</strong>. Вторая форма команды выполняет обратное действие,
|
||
она извлекает из двоичной строки данные и возвращает их как
|
||
обычные Tcl строки.</p>
|
||
|
||
<dl>
|
||
<dt><a name="binary format"></a><strong>binary</strong> <strong>format</strong></dt>
|
||
|
||
<dd><p>Команда <strong>binary format</strong> создает двоичную строку по
|
||
правилам, заданным с помощью шаблона <em>formatString</em>.
|
||
Содержание этой строки задается дополнительными аргументами
|
||
<em>arg</em>. Команда возвращает сформированную двоичную
|
||
строку.</p>
|
||
|
||
<p>Шаблон <em>formatString</em> содержит последовательность из
|
||
нуля или более спецификаторов преобразования, разделенных
|
||
одним или более пробелами. Каждый спецификатор
|
||
преобразования состоит из буквы, за которой может следовать
|
||
число count. Как правило, спецификатор использует один из
|
||
аргументов <em>arg</em> чтобы получить величину для
|
||
форматирования. Буква в спецификаторе указывает тип
|
||
преобразования (форматирования). Число <em>count</em> обычно
|
||
указывает сколько объектов для форматирования выбирается из
|
||
значения <em>arg</em>. Соответственно, <em>count</em> должно
|
||
быть неотрицательным десятичным числом. Если значение count
|
||
равно <strong>*</strong>, это обычно указывает, что надо использовать все
|
||
значение аргумента. Если число аргументов <em>arg</em> не
|
||
соответствует числу спецификаторов, требующих для себя
|
||
дополнительного аргумента, выдается ошибка.</p>
|
||
|
||
<p>Обычно результат каждого нового преобразования дописывается
|
||
в конец возвращаемой строки. Однако, с помощью специальных
|
||
спецификаторов точку ввода нового значения (курсор) можно
|
||
передвигать по формируемой строке.</p>
|
||
|
||
<p>Ниже приведены допустимые значения спецификаторов
|
||
преобразований и описаны соответствующие преобразования.</p>
|
||
|
||
<dl>
|
||
|
||
<dt><strong>a</strong> ?<em>count</em>?</dt>
|
||
|
||
<dd><p>Передает в выходную строку <em>count</em> символов из
|
||
соответствующего аргумента <em>arg</em>. Если в <em>arg</em>
|
||
содержится меньше <em>count</em> байт, добавляются нулевые
|
||
байты. Если в <em>arg</em> содержится больше <em>count</em>
|
||
байт, "лишние" байты игнорируются. Если
|
||
<em>count</em> равно <strong>*</strong>, используются все байты из
|
||
<em>arg.</em> Если <em>count</em> отсутствует, используется
|
||
один байт. Например, команда</p>
|
||
<pre>
|
||
binary format a7a*a alpha bravo charlie
|
||
</pre>
|
||
<p>вернет строку, эквивалентную <strong> alpha\000\000bravoc</strong>.</p>
|
||
</dd>
|
||
|
||
<dt><strong>A</strong> ?<em>count</em>?</dt>
|
||
|
||
<dd><p>То же, что и a, за исключением того, что для
|
||
заполнения используются не нулевые байты, а
|
||
пробелы. Например, команда</p>
|
||
<pre>
|
||
binary format A6A*A alpha bravo charlie
|
||
</pre>
|
||
<p>вернет <strong>alpha bravoc</strong>.</p>
|
||
</dd>
|
||
|
||
<dt><strong>b</strong> ?<em>count</em>?</dt>
|
||
|
||
<dd><p>Передает в выходную строку <em>count</em> бит в порядке
|
||
от младших к старшим в каждом байте. Аргумент <em>arg</em>
|
||
должен состоять из последовательности нулей и единиц.
|
||
Порядок байтов в выходной строке тот же, что и во
|
||
входной информации. Лишние биты отсекаются, недостающие
|
||
дополняются нулями. По умолчанию форматируется один бит.
|
||
Если число форматируемых битов не соответствует целому
|
||
числу байтов, недостающие биты дополняются нулями.
|
||
|