2 Copyright (c) 2000-2014 Ericsson Telecom AB
4 All rights reserved. This program and the accompanying materials
5 are made available under the terms of the Eclipse Public License v1.0
6 which accompanies this distribution, and is available at
7 http://www.eclipse.org/legal/epl-v10.html
11 <meta http-equiv=
"Content-Type" content=
"text/html; charset=utf-8">
12 <meta http-equiv=
"Content-Language" content=
"en-us">
13 <title>hexstring
</title>
15 <body bgcolor=
"#DAD3C5" vlink=
"#0094D2" link=
"#003258">
16 <table align=
"left" border=
"0" cellspacing=
"0" cellpadding=
"0" valign=top
>
18 <td width=
105 height=
40><a href=
"https://projects.eclipse.org/projects/tools.titan"><img src=
"../images/titan_transparent.gif" border=
0 width=
105 height=
40 align=
"left" alt=
"Titan"></a></td>
21 <table border=
"0" align=
"right" cellpadding=
"0" cellspacing=
"0">
23 <td><a href=
"../titan_main.html" alt=
"contents"><img border=
"0" src=
"../images/ao.jpg" width=
"53" height=
"40"></a></td>
24 <td><a href=
"../titan_index.html" alt=
"index"><img border=
"0" src=
"../images/up.jpg" width=
"53" height=
"40"></a></td>
25 <td><a alt=
"previous" href=
"hex2str.html"><img border=
"0" src=
"../images/left.jpg" width=
"53" height=
"40"></a></td>
26 <td><a href=
"if.html" alt=
"next"><img border=
"0" src=
"../images/right.jpg" width=
"53" height=
"40"></a></td>
33 <hr align=
"left" width=
"75%">
34 <p>The keyword
<b><font face=
"Courier New">hexstring
</font></b> denotes a basic string type whose distinguished values are the ordered sequences of
of hexadecimal digits, each corresponding
35 to an ordered sequence of four bits.
</p>
37 <li>hexadecimal string values are written between
<a href=
"#double_quotation"> single quotes and followed by the capital letter H.
</a> (' 'H).
</li>
38 <li>A hexadecimal string may be specified by its integer value using a
<a href=
"#conversion">conversion function
</a>.
</li>
39 <li>The
<a href=
"#relation">relational operators
</a> equality (==) and non-equality (!=) can be used to compare values of two hexadecimal strings
</li>
40 <li>The
<a href=
"#shift">shift operators
</a> perform the shift left (
<<) and shift right (
>>) operations.
</li>
41 <li>The
<a href=
"#rotate">rotate operators
</a> perform the rotate left (
<@) and rotate right (@
>) operations.
</li>
42 <li>The
<a href=
"#concatenation"> concatenation operator
</a> (
&) performs a simple concatenation from left to right.
</li>
43 <li>Bitwise operators (
<a href=
"and4b.html">and4b
</a>,
<a href=
"not4b.html">not4b
</a>,
<a href=
"or4b.html">or4b
</a>,
<a href=
"xor4b.html"
44 target=
"_blank">xor4b
</a>) are used to manipulate bits in the string.
</li>
45 <li>A
<a href=
"#array"> single octet
</a> may be accessed using an array-like syntax. The leftmost octet has the index zero.
</li>
46 <li>The hexadecimal string may be
<a href=
"#vacuum">empty
</a>.
</li>
47 <li>The length of the hexadecimal string can be constrained using the keyword
<a href=
"length.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">length
</font></b></a>.
</li>
48 <li>Another way to limit the permitted values of an hexadecimal string is
<a href=
"#list">to list them
</a>.
</li>
49 <li>Predefined functions operating on hexadecimal strings:
</li>
51 <li><a href=
"#bit2hex">hex2oct
</a> converts a hexadecimal string value to an octet string.
</li>
52 <li><a href=
"#str2int">hex2int
</a> converts a hexadecimal string to the equivalent integer.
</li>
53 <li><a href=
"#str2oct">hex2bit
</a> converts a hexadecimal string to a binary string.
</li>
54 <li><a href=
"#bit2str">hex2str
</a> displays a hexadecimal string as a character string.
</li>
55 <li><a href=
"#lengthof">lengthof
</a> returns an integer value indicating the number of octets in a string.
</li>
58 <p>Related keyword:
</p>
60 <li><a href=
"bit2hex.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">bit2hex
</font></b></a></li>
61 <li><a href=
"hex2bit.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">hex2bit
</font></b></a></li>
62 <li><a href=
"hex2int.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">hex2int
</font></b></a></li>
63 <li><a href=
"hex2oct.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">hex2oct
</font></b></a></li>
64 <li><a href=
"hex2str.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">hex2str
</font></b></a></li>
65 <li><a href=
"int2hex.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">int2hex
</font></b></a></li>
66 <li><a href=
"length.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">length
</font></b></a></li>
67 <li><a href=
"lengthof.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">lengthof
</font></b></a></li>
68 <li><a href=
"oct2hex.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">oct2hex
</font></b></a></li>
69 <li><a href=
"str2hex.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">str2hex
</font></b></a></li>
70 <li><a href=
"substr.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">substr
</font></b></a></li>
71 <li><a href=
"and4b.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">and4bit
</font></b></a></li>
72 <li><a href=
"not4b.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">not4bit
</font></b></a></li>
73 <li><a href=
"or4b.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">or4bit
</font></b></a></li>
74 <li><a href=
"xor4b.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">xor4bit
</font></b></a></li>
76 <hr align=
"left" width=
"50%">
79 <table border=
"0" width=
"90%" bgcolor=
"#FFB599" cellpadding=
"4">
82 <h3 align=
"center"><font face=
"Courier New" color=
"#003258" size=
"5"><b>hexstring
</b></font></h3>
88 <hr align=
"left" width=
"50%">
89 <p><a name=
"double_quotation">Example
1</a>:
90 <p><font face=
"Courier New">const hexstring c_elch := 'C'H;
<br>
92 <p>The constant called c_elch contains the hexadecimal string C.
</p>
93 <hr align=
"left" width=
"50%">
94 <p><a name=
"conversion">Example
2</a>:
95 <p><font face=
"Courier New">const hexstring c_entiere := int2hex (
64,
3);
<br>
97 <p>The constant c_entiere will contain the hexadecimal string
040 because the converted integer number (
64 -
> 40) must be coded on
3 hexadecimal digits and therefore padded with a leading zero.
</p>
98 <hr align=
"left" width=
"50%">
99 <p><a name=
"relation">Example
3</a>:
100 <p><font face=
"Courier New">const boolean c_undanbedes := ( c_entiere == c_elch );
<br>
102 <p>The constant c_undanbedes will have the value false, because two hexadecimal strings are not equal. The parentheses are optional.
</p>
103 <hr align=
"left" width=
"50%">
104 <p><a name=
"concatenation">Example
4</a>:
105 <p><font face=
"Courier New">const hexstring c_samman := c_entiere
& c_elch;
<br>
107 <p>The constant c_samman will contain the hexadecimal string
040C
</p>
108 <hr align=
"left" width=
"50%">
109 <p><a name=
"array">Example
5</a>:
110 <p><font face=
"Courier New">const hexstring c_lakomec := c_entiere[
1];
<br>
112 <p>The constant called c_lakomec will contain the hexadecimal string
4.
</p>
113 <hr align=
"left" width=
"50%">
114 <p><a name=
"vacuum">Example
6</a>:
115 <p><font face=
"Courier New">const hexstring c_tomt := ''H;
<br>
117 <p>The constant called c_tomt will be an empty string.
</p>
118 <hr align=
"left" width=
"50%">
119 <p><a name=
"bit2hex">Example
7a
</a>:
120 <p><font face=
"Courier New">const octetstring c_kaprifol := hex2oct ('
7AA'H);
</font><br>
121 <p>The constant called c_kaprifol will contain the octet string
07AA. The resulting octet string contains
0 as leftmost hex digit followed by the same sequence of hex digits as in the hexadecimal
122 string because the number of the hexadecimal digits is odd.
</p>
123 <hr align=
"left" width=
"50%">
124 <p><a name=
"str2int">Example
7b
</a>:
125 <p><font face=
"Courier New">const integer c_gondol := hex2int ('
555'H);
<br>
127 <p>The constant called c_gondol will have the integer value
1365. The result will be always positive.
</p>
128 <hr align=
"left" width=
"50%">
129 <p><a name=
"str2oct">Example
7c
</a>:
130 <p><font face=
"Courier New">const bitstring c_perrongen := hex2bit ('A7'H);
<br>
132 <p>The constant called c_perrongen will contain the bit string
10100111.
</p>
133 <hr align=
"left" width=
"50%">
134 <p><a name=
"bit2str">Example
7d
</a>:
135 <p><font face=
"Courier New">const charstring c_snaella := hex2str ('BBC0530A0'H);
<br>
137 <p>The constant called c_snaella will contain the string BBC0530A0 because the resulting character string has the same length as the hexadecimal string and contains only the characters '
0' .. 'F'.
</p>
138 <hr align=
"left" width=
"50%">
139 <p><a name=
"lengthof">Example
7e
</a>:
140 <p><font face=
"Courier New">const integer c_skynda := lengthof ('BBC0530A0'H);
<br>
142 <p>The constant called c_skynda will have the value
9 corresponding to the number of octets in the string.
</p>
143 <hr align=
"left" width=
"50%">
144 <p><a name=
"list">Example
8</a>:
145 <p><font face=
"Courier New">var hexstring c_mot ('
010'H,'
77'H,'A55CC'H );
<br>
147 <p>The variable called c_mot may hold the hexadecimal strings
010,
77 and A55CC only.
</p>
148 <hr align=
"left" width=
"50%">
149 <p><a name=
"rotate">Example
9</a>:
</p>
150 <p><font face=
"Courier New">const hexstring c_koerhinta := '
12345'H @
> 2;
<br>
152 <p>The constant called c_koerhinta will hold the value '
45123'H (the left operand rotated by two hexadecimal digits).
</p>
153 <hr align=
"left" width=
"50%">
154 <p><a name=
"shift">Example
10</a>:
</p>
155 <p><font face=
"Courier New">const hexstring c_wet := '
12345'H
>> 2;
<br>
157 <p>The constant called c_wet will hold the value '
00123'H (the left operand shifted by two hexadecimal digits).
</p>
158 <hr align=
"left" width=
"25%">
159 <hr align=
"left" width=
"25%">
160 <p align=
"left"><a HREF=
"BNF.html#hexstringkeyword">BNF definition
</a> of
<font face=
"Courier New">hexstring
</font><br>
161 <a HREF=
"BNF.html#hexstringvalue">BNF definition
</a> of hexstring value
</p>