2018-02-05 17:22:04 +03:00
|
|
|
|
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>binary</title>
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
<h1>binary</h1>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Команда вставляет и извлекает поля из двоичных строк.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2>ОПИСАНИЕ</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p> Команда <strong>binary</strong> предоставляет средства для
|
|
|
|
|
манипулирования двоичными данными. Первая из форм команды
|
|
|
|
|
конвертирует обычные Tcl-значения <em>arg</em> в двоичное
|
|
|
|
|
число. Например, вызванная с аргументами <strong>16</strong> и <strong>22</strong>,
|
|
|
|
|
она вернет 8-байтовое двоичную строку, состоящую из двух
|
|
|
|
|
4-байтовых чисел, представляющих соответственно <strong>16</strong> и
|
|
|
|
|
<strong>22</strong>. Вторая форма команды выполняет обратное действие,
|
|
|
|
|
она извлекает из двоичной строки данные и возвращает их как
|
|
|
|
|
обычные Tcl строки.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dl>
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dt><a name=binary format></a><strong>binary</strong> <strong>format</strong></dt>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd><p>Команда <strong>binary format</strong> создает двоичную строку по
|
|
|
|
|
правилам, заданным с помощью шаблона <em>formatString</em>.
|
|
|
|
|
Содержание этой строки задается дополнительными аргументами
|
|
|
|
|
<em>arg</em>. Команда возвращает сформированную двоичную
|
|
|
|
|
строку.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Шаблон <em>formatString</em> содержит последовательность из
|
|
|
|
|
нуля или более спецификаторов преобразования, разделенных
|
|
|
|
|
одним или более пробелами. Каждый спецификатор
|
|
|
|
|
преобразования состоит из буквы, за которой может следовать
|
|
|
|
|
число count. Как правило, спецификатор использует один из
|
|
|
|
|
аргументов <em>arg</em> чтобы получить величину для
|
|
|
|
|
форматирования. Буква в спецификаторе указывает тип
|
|
|
|
|
преобразования (форматирования). Число <em>count</em> обычно
|
|
|
|
|
указывает сколько объектов для форматирования выбирается из
|
|
|
|
|
значения <em>arg</em>. Соответственно, <em>count</em> должно
|
|
|
|
|
быть неотрицательным десятичным числом. Если значение count
|
|
|
|
|
равно <strong>*</strong>, это обычно указывает, что надо использовать все
|
|
|
|
|
значение аргумента. Если число аргументов <em>arg</em> не
|
|
|
|
|
соответствует числу спецификаторов, требующих для себя
|
|
|
|
|
дополнительного аргумента, выдается ошибка.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Обычно результат каждого нового преобразования дописывается
|
|
|
|
|
в конец возвращаемой строки. Однако, с помощью специальных
|
|
|
|
|
спецификаторов точку ввода нового значения (курсор) можно
|
|
|
|
|
передвигать по формируемой строке.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Ниже приведены допустимые значения спецификаторов
|
|
|
|
|
преобразований и описаны соответствующие преобразования.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dl>
|
|
|
|
|
|
|
|
|
|
<dt><strong>a</strong> ?<em>count</em>?</dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<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>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<pre>
|
|
|
|
|
binary format a7a*a alpha bravo charlie
|
|
|
|
|
</pre>
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>вернет строку, эквивалентную <strong> alpha
|