1
2=head1 HDR EXAMPLES
3
4This document will help you understand how to use the I<hdr> command which is a part of the B<Data::HexDump::Range> module.
5Some advanced examples use the module directly.
6
7The latest version is  at L<http://search.cpan.org/search?query=Data%3A%3AHexDump%3A%3ARange>.
8
9This document contains many embeded examples in HTML format. It is mean to be processed by I<pod2html> or equivalent.
10
11=head2 When in the hexdump land, do as hexdump does
12
13Without range definition I<hdr> acts like I<hexdump>.
14
15 >$ hdr file_name
16
17=begin html
18
19<pre style ="font-family: monospace; background-color: #000 ;">
20
21<span style='color:#fff;'>00000000</span> <span style='color:#0f0;'>63 6f 6d 6d 69 74 20 38 38 30 39 63 38 65 38 34 </span> <span style='color:#0f0;'>commit 8809c8e84</span>
22<span style='color:#fff;'>00000010</span> <span style='color:#0f0;'>65 62 33 32 33 62 62 61 61 33 36 36 39 65 39 34 </span> <span style='color:#0f0;'>eb323bbaa3669e94</span>
23<span style='color:#fff;'>00000020</span> <span style='color:#0f0;'>38 62 36 38 35 30 32 36 63 33 35 66 61 35 39 20 </span> <span style='color:#0f0;'>8b685026c35fa59 </span>
24<span style='color:#fff;'>00000030</span> <span style='color:#0f0;'>28 48 45 41 44 2c 20 6d 61 73 74 65 72 29 0a 41 </span> <span style='color:#0f0;'>(HEAD, master).A</span>
25<span style='color:#fff;'>00000040</span> <span style='color:#0f0;'>75 74 68 6f 72 3a 20 6e 61 64 69 6d 20 6b 68 65 </span> <span style='color:#0f0;'>uthor: nadim khe</span>
26<span style='color:#fff;'>00000050</span> <span style='color:#0f0;'>6d 69 72 20 3c 6e 6b 68 40 63 70 61 6e 2e 6f 72 </span> <span style='color:#0f0;'>mir <nkh@cpan.or</span>
27<span style='color:#fff;'>00000060</span> <span style='color:#0f0;'>67 3e 0a 44 61 74 65 3a 20 20 20 53 75 6e 20 41 </span> <span style='color:#0f0;'>g>.Date:   Sun A</span>
28<span style='color:#fff;'>00000070</span> <span style='color:#0f0;'>70 72 20 31 38 20 30 33 3a 33 32 3a 30 33 20 32 </span> <span style='color:#0f0;'>pr 18 03:32:03 2</span>
29<span style='color:#fff;'>00000080</span> <span style='color:#0f0;'>30 31 30 20 2b 30 32 30 30 0a 0a 20 20 20 20 41 </span> <span style='color:#0f0;'>010 +0200..    A</span>
30</pre>
31
32=end html
33
34=head2 Output format
35
36The default output format is B<ANSI>. B<ASCII> is like B<ANSI> without the colors.
37
38=head3 ASCII
39
40  00000000 63 6f 6d 6d 69 74 20 38 38 30 39 63 38 65 38 34  commit 8809c8e84
41  00000010 65 62 33 32 33 62 62 61 61 33 36 36 39 65 39 34  eb323bbaa3669e94
42  00000020 38 62 36 38 35 30 32 36 63 33 35 66 61 35 39 20  8b685026c35fa59
43  00000030 28 48 45 41 44 2c 20 6d 61 73 74 65 72 29 0a 41  (HEAD, master).A
44  00000040 75 74 68 6f 72 3a 20 6e 61 64 69 6d 20 6b 68 65  uthor: nadim khe
45  00000050 6d 69 72 20 3c 6e 6b 68 40 63 70 61 6e 2e 6f 72  mir <nkh@cpan.or
46  00000060 67 3e 0a 44 61 74 65 3a 20 20 20 53 75 6e 20 41  g>.Date:   Sun A
47  00000070 70 72 20 31 38 20 30 33                          pr 18 03
48
49=head3 ANSI and HTML
50
51Both format will generate colorized output.
52
53=head2 Range descritption
54
55                  format                          range example
56
57  normal range => integer                         header, 4, bright_blue
58  comment      => #                               data section start, #
59  extra header => @                               header, @, red
60  bitfield     => [XInteger][xInteger]bInteger    bitfield, X2x4b4         # X is byte offset, x is bit offset
61  skip range   => XInteger                        boring, X256,, comment
62
63Note that the integer part can be a hexadecimal value starting with I<0x>.
64
65=head3 Direct command line defintion
66
67You can define your range description on the command line by passing a string to  the I<--range_description> (short I<-r>) option.
68
69  hdr -r 'magic, 5,   :other,37  :bf,b8   :skip,X32,, I skipped :more, 20'
70
71=head3 Definition from a file
72
73The I<--range_description> option also accept a file name for a range description written in Perl format.
74
75  hdr -r my_range_description_file
76
77=head4 simple file
78
79 	[
80 	  ['data header', 5, 'blue on_cyan'],
81 	  ['data', 20, 'blue on_bright_yellow'],
82 	] ;
83
84=head4 more structured file
85
86 use strict ;
87 use warnings ;
88
89 # any perl code you may need to generate your range definition
90
91 my $data_range = # definition to re-use
92 	[
93 	  ['data header', 5, 'blue on_cyan'],
94 	  ['data', 20, 'blue on_bright_yellow'],
95 	] ;
96
97 my $structured_range =
98 	[
99 	  ['zero size', 0],
100 	  [
101 	    ['magic cookie', 12, 'red'],
102 	    ['padding', 32, 'yellow'],
103 	    $data_range,
104 	  ],
105          ['A comment', '#'],
106 	  [
107 	    ['extra data', 18, undef],
108 	      [
109 	      $data_range,
110 	      ['footer', 4, 'bright_yellow on_red'],
111  	    ]
112   	  ],
113  	] ;
114
115 $structured_range ; # return the range description
116
117See Also L<Advanced usage>
118
119=head2 Decimal dump
120
121You can get a decimal dump instead for an hexidecimal dump.
122
123 hdr  -r 'header,20 :DATA,4  :c,b24  :e,x4b5 :uninterresting, x16  :more,20' -display_dec_dump 1 -display_hex_dump 0 -rul -col -o ver
124
125=begin html
126
127<pre style ="font-family: monospace; background-color: #000 ;">
128<span style = 'color:#fff; '>RANGE_NAME       OFFSET   CUMULATI DEC_DUMP                                                         ASCII_DUMP       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
129</span><span style = 'color:#fff; '>                                   0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5    0123456789012345 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
130</span><span style = 'color:#fff;  color:#0f0; '>header          </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>068 097 116 097 058 058 072 101 120 068 117 109 112 058 058 082 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>Data::HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
131</span><span style = 'color:#fff;  color:#0f0; '>header          </span><span style = 'color:#fff;  color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>097 110 103 101 </span><span style = 'color:#fff;  color:#0f0; '>                                                </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>ange</span><span style = 'color:#fff;  color:#0f0; '>            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
132</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>DATA            </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000014</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>                </span><span style = 'color:#fff;  color:#ff0; '>010 061 061 061 </span><span style = 'color:#fff;  color:#ff0; '>                                </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>    </span><span style = 'color:#fff;  color:#ff0; '>.===</span><span style = 'color:#fff;  color:#ff0; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
133</span><span style = 'color:#fff;  color:#0ff; '>.c              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>00 .. 23</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>--- 061 061 061 value: 4013373                                  </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>.bitfield: -=== </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
134</span><span style = 'color:#fff;  color:#f0f; '>.e              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>04 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>--- --- --- 019 value: 19                                       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
135</span><span style = 'color:#fff;  color:#f00; '>&gt;&gt;uninterresting</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000018</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000027</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>000 000 000 016 skipped: 16 bytes                               </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>                </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
136</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>more            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000028</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>                                </span><span style = 'color:#fff;  color:#ff0; '>061 010 010 039 072 101 120 097 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>        </span><span style = 'color:#fff;  color:#ff0; '>=..&apos;Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
137</span><span style = 'color:#fff;  color:#ff0; '>more            </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000008</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>100 101 099 105 097 108 032 082 097 110 103 101 </span><span style = 'color:#fff;  color:#ff0; '>                </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>decial Range</span><span style = 'color:#fff;  color:#ff0; '>    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
138</span>
139</pre>
140
141=end html
142
143You can also have both dumps simulteanously. Check the display option of the I<hdr> command.
144
145=head2 Colors and Headers
146
147=head3 Showing the column header and the rulers
148
149  $>hdr -col -rul your_file
150
151You can also insert a header anywhere, except as a first range since -col and -rul are made for that, by adding a header range in your
152range definition.
153
154  $> hdr -r 'zzz,50: show_header,@,red: data,20' -o ver -col -rul some_file
155  RANGE_NAME       OFFSET   CUMULATI HEX_DUMP                                         ASCII_DUMP
156                                     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789012345
157  zzz              00000000 00000000 44 61 74 61 3a 3a 48 65 78 44 75 6d 70 3a 3a 52  Data::HexDump::R
158  zzz              00000010 00000010 61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ange.===========
159  zzz              00000020 00000020 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61  =========..'Hexa
160  zzz              00000030 00000030 64 65                                            de
161  RANGE_NAME       OFFSET   CUMULATI HEX_DUMP                                         ASCII_DUMP
162                                   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789012345
163  data             00000032 00000000       63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d    cial Range Dum
164  data             00000040 0000000e 70 65 72 27 20 20                                per'
165
166=head3 Defining your own colors
167
168Define a custom color file containing a data in the format below andd pass it as argument to option I<--colors>
169
170  {
171  HTML =>
172	{
173	# custom color name
174	custom => 'color:#f00; background-color:#ff0; ',
175
176	# the normal ansi color
177	reset => '',
178	white => 'color:#aaa; ',
179	black => 'color:#000; ',
180	green => 'color:#0a0; ',
181	...
182	},
183  ANSI =>
184	{
185	# custom color name, it's a good idea to define them on both formats
186	custom => 'bright_red on_bright_yellow; ',
187
188	reset => '',
189	white => 'white',
190	...
191	},
192  }
193
194=head3 Colorize only the range you give color to
195
196By default I<hdr> will assign colors to ranges you don't give a color to.
197
198  hdr -r 'A,10:B,10,red:C,10:D,10,green' -col -rul
199
200=begin html
201
202<pre style ="font-family: monospace; background-color: #000 ;">
203<span style = 'color:#fff;  color:#fff; '>OFFSET   HEX_DUMP                                         ASCII_DUMP       RANGE_ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
204</span><span style = 'color:#fff;  color:#fff; '>         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789012345        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
205</span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>63 6f 6d 6d 69 74 20 31 39 39 </span><span style = 'color:#fff;  color:#a00; '>61 34 62 31 32 37 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>commit 199</span><span style = 'color:#fff;  color:#a00; '>a4b127</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#a00; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
206</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#a00; '>62 32 39 66 </span><span style = 'color:#fff;  color:#ff0; '>39 31 64 32 65 36 33 66 39 35 </span><span style = 'color:#fff;  color:#0a0; '>66 38 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#a00; '>b29f</span><span style = 'color:#fff;  color:#ff0; '>91d2e63f95</span><span style = 'color:#fff;  color:#0a0; '>f8</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#a00; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#ff0; '>C</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#0a0; '>D</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
207</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0a0; '>63 34 30 62 64 65 31 39                         </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0a0; '>c40bde19        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0a0; '>D</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
208</span>
209</pre>
210
211=end html
212
213If you only want the ranges you gave a color to to be colorized,use the I<--color bw> option
214
215  hdr -r 'A,10:B,10,red:C,10:D,10,green' -col -rul -color bw
216
217=begin html
218
219<pre style ="font-family: monospace; background-color: #000 ;">
220<span style = 'color:#fff;  color:#fff; '>OFFSET   HEX_DUMP                                         ASCII_DUMP       RANGE_ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
221</span><span style = 'color:#fff;  color:#fff; '>         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789012345        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
222</span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#fff; '>63 6f 6d 6d 69 74 20 31 39 39 </span><span style = 'color:#fff;  color:#a00; '>61 34 62 31 32 37 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#fff; '>commit 199</span><span style = 'color:#fff;  color:#a00; '>a4b127</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#fff; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#a00; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
223</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#a00; '>62 32 39 66 </span><span style = 'color:#fff;  color:#fff; '>39 31 64 32 65 36 33 66 39 35 </span><span style = 'color:#fff;  color:#0a0; '>66 38 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#a00; '>b29f</span><span style = 'color:#fff;  color:#fff; '>91d2e63f95</span><span style = 'color:#fff;  color:#0a0; '>f8</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#a00; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#fff; '>C</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#0a0; '>D</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
224</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0a0; '>63 34 30 62 64 65 31 39                         </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0a0; '>c40bde19        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0a0; '>D</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
225</span>
226</pre>
227
228=end html
229
230=head2 Input
231
232=head3 from file or stdin
233
234  hdr -r 'magic cooookie, 5,  ...'  -rul -o ver -col my_file
235
236or pipe your data into I<hdr>
237
238  cat my_file | hdr -r 'magic, 5,  ...' -rul -o ver -col
239
240=head3 Too little data
241
242I<hdr> will display one or more warnings is there is not enough data for all the defined ranges.
243
244  Warning: range 'xxx' size 32 was shortened to 8 due to maximum size limit
245  Warning: More ranges to display but no more data.
246
247=head3 Too much data
248
249I<hdr> only uses the  part that is used by your range descriptions. The rest is ignored.
250
251If you want to use an existing range description that contains many range definitions, you can use the I<--maximum_size> option
252to limit the amount of data I<hdr> will use.
253
254  $>hdr -r 'A,50:B,50:C,50:D,50' --maximum_size 100
255
256will display a warning:
257
258  Warning: More ranges to display but no more data.
259
260and this dump:
261
262=begin html
263
264<pre style ="font-family: monospace; background-color: #000 ;">
265<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 61 74 61 3a 3a 48 65 78 44 75 6d 70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>Data::HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
266</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
267</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>=========..&apos;Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
268</span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>64 65 </span><span style = 'color:#fff;  color:#ff0; '>63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>de</span><span style = 'color:#fff;  color:#ff0; '>cial Range Dum</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>A</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#ff0; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
269</span><span style = 'color:#fff; '>00000040</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>70 65 72 27 20 20 77 69 74 68 20 63 6f 6c 6f 72 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>per&apos;  with color</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
270</span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>2c 20 62 69 74 66 69 65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>, bitfields and </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
271</span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>73 6b 69 70                                     </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>skip            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>B</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
272</span>
273</pre>
274
275=end html
276
277=head2 Bitfields
278
279  $> hdr  -r 'header,1 :DATA,4  :c,b9  :d,b3 :e,x4b5  :the end,8 :x,b3 :data,47 :v,x90b8' -o ver
280
281=head3 Vertical mode
282
283=begin html
284
285<pre style ="font-family: monospace; background-color: #000 ;">
286<span style = 'color:#fff;  color:#0f0; '>header          </span><span style = 'color:#fff;  color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 </span><span style = 'color:#fff;  color:#0f0; '>                                             </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>D</span><span style = 'color:#fff;  color:#0f0; '>               </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
287</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>DATA            </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000001</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>   </span><span style = 'color:#fff;  color:#ff0; '>61 74 61 3a </span><span style = 'color:#fff;  color:#ff0; '>                                 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '> </span><span style = 'color:#fff;  color:#ff0; '>ata:</span><span style = 'color:#fff;  color:#ff0; '>           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
288</span><span style = 'color:#fff;  color:#0ff; '>.c              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>00 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>-- -- 01 3a    -----------------------100111010 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>.bitfield: --.: </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
289</span><span style = 'color:#fff;  color:#f0f; '>.d              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>00 .. 02</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>-- -- -- 02    -----------------------------010 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
290</span><span style = 'color:#fff;  color:#f00; '></span><span style = 'color:#fff;  color:#f00; '>the end         </span><span style = 'color:#fff;  color:#f00; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000005</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>               </span><span style = 'color:#fff;  color:#f00; '>3a 48 65 78 44 75 6d 70 </span><span style = 'color:#fff;  color:#f00; '>         </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>     </span><span style = 'color:#fff;  color:#f00; '>:HexDump</span><span style = 'color:#fff;  color:#f00; '>   </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
291</span><span style = 'color:#fff;  color:#ff0; '>.x              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>00 .. 02</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>-- -- -- 00    -----------------------------000 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
292</span><span style = 'color:#fff;  color:#0ff; '></span><span style = 'color:#fff;  color:#0ff; '>data            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>0000000d</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>                                       </span><span style = 'color:#fff;  color:#0ff; '>3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>             </span><span style = 'color:#fff;  color:#0ff; '>::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
293</span><span style = 'color:#fff;  color:#0ff; '>data            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000003</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
294</span><span style = 'color:#fff;  color:#0ff; '>data            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000013</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>=========..&apos;Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
295</span><span style = 'color:#fff;  color:#0ff; '>data            </span><span style = 'color:#fff;  color:#0ff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000023</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>64 65 63 69 61 6c 20 52 61 6e 67 65 </span><span style = 'color:#fff;  color:#0ff; '>            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>decial Range</span><span style = 'color:#fff;  color:#0ff; '>    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
296</span><span style = 'color:#fff;  color:#0f0; '>.v              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>90 .. 97</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>-- -- -- 59    01011001------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>.bitfield: ---Y </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
297</span>
298</pre>
299
300=end html
301
302=head3 Horizontal mode
303
304By default, bitmaps are not displayed in horizontal mode as they tend to clutter the display. You can force the display of bitfields in vertical
305mode by seting the I<--display_bitfields> option to true.
306
307without I<--display_bitfields> option set:
308
309=begin html
310
311<pre style ="font-family: monospace; background-color: #000 ;">
312<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 </span><span style = 'color:#fff;  color:#ff0; '>61 74 61 3a </span><span style = 'color:#fff;  color:#f00; '>3a 48 65 78 44 75 6d 70 </span><span style = 'color:#fff;  color:#0ff; '>3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>D</span><span style = 'color:#fff;  color:#ff0; '>ata:</span><span style = 'color:#fff;  color:#f00; '>:HexDump</span><span style = 'color:#fff;  color:#0ff; '>::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>header</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#ff0; '>DATA</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#f00; '>the end</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
313</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
314</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>=========..&apos;Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
315</span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>64 65 63 69 61 6c 20 52 61 6e 67 65             </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>decial Range    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
316</span>
317</pre>
318
319=end html
320
321with I<--display_bitfields> option set to true:
322
323=begin html
324
325<pre style ="font-family: monospace; background-color: #000 ;">
326<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 </span><span style = 'color:#fff;  color:#ff0; '>61 74 61 3a </span><span style = 'color:#fff;  color:#f00; '>3a 48 65 78 44 75 6d 70 </span><span style = 'color:#fff;  color:#0ff; '>3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>D</span><span style = 'color:#fff;  color:#ff0; '>ata:</span><span style = 'color:#fff;  color:#f00; '>:HexDump</span><span style = 'color:#fff;  color:#0ff; '>::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>header</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#ff0; '>DATA</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#f00; '>the end</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
327</span><span style = 'color:#fff;  color:#0ff; '>00 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>DATA    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>-- -- 01 3a    -----------------------100111010 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>.bitfield: --.: </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>.c              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
328</span><span style = 'color:#fff;  color:#f0f; '>00 .. 02</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>DATA    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>-- -- -- 02    -----------------------------010 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>.d              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
329</span><span style = 'color:#fff;  color:#ff0; '>00 .. 02</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>the end </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>-- -- -- 00    -----------------------------000 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>.x              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
330</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
331</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>=========..&apos;Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
332</span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>64 65 63 69 61 6c 20 52 61 6e 67 65             </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>decial Range    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
333</span><span style = 'color:#fff;  color:#0f0; '>90 .. 97</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>data    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>-- -- -- 59    01011001------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>.bitfield: ---Y </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>.v              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
334</span>
335</pre>
336
337=end html
338
339=head3 Not enough data for the bitfield
340
341If you define an offset and a bit amout that sets the bitfields outside the data range, or you define a bitfield with more than 32 bits, The bitfields will be displayed as an error message.
342
343   hdr  -r 'x,b3 :A, 1 : y,X3x2b16 :z, b33'
344
345=begin html
346
347<pre style ="font-family: monospace; background-color: #000 ;">
348<span style = 'color:#fff;  color:#0f0; '>data            </span><span style = 'color:#fff;  color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 </span><span style = 'color:#fff;  color:#0f0; '>                                             </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>D</span><span style = 'color:#fff;  color:#0f0; '>               </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
349</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>DATA            </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000001</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>   </span><span style = 'color:#fff;  color:#ff0; '>61 74 61 3a </span><span style = 'color:#fff;  color:#ff0; '>                                 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '> </span><span style = 'color:#fff;  color:#ff0; '>ata:</span><span style = 'color:#fff;  color:#ff0; '>           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
350</span><span style = 'color:#fff;  color:#0ff; '>.c              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>00 .. 49</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>Error: bitfield is more than 32 bits long (50)  </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>Error: bitfield </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
351</span><span style = 'color:#fff;  color:#f0f; '>.d              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>30 .. 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>Error: 33 bits needed but only 32 bits available</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>Error: 33 bits n</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
352</span><span style = 'color:#fff;  color:#f00; '>.e              </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>04 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>-- -- -- 13    -----------------------10011---- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
353</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>the end         </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000005</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>               </span><span style = 'color:#fff;  color:#ff0; '>3a 48 65 78 44 75 6d 70 </span><span style = 'color:#fff;  color:#ff0; '>         </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>     </span><span style = 'color:#fff;  color:#ff0; '>:HexDump</span><span style = 'color:#fff;  color:#ff0; '>   </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
354</span>
355</pre>
356
357=end html
358
359=head3 Bitfield offset
360
361The format for a bitfield is I<[XInteger][xInteger]>B<b>I<[Integer]>. You can use I<X> for  byte offset and I<x> for bit offset. If no size is given after I<b>, the bitfield consists of a single bit
362
363Examples:
364
365=over 2
366
367=item * X1x1b  - second bit of the second byte
368
369=item * X3x8b4 - 4 first bits of the fifth byte
370
371=item * X4b8 - fifth byte
372
373=item * X1x0b8 - second byte
374
375=back
376
377  hdr  -r 'data,4 :X1b1,X1b1 :X3x8b4,X3x8b4 :X4b8,X4b8 :X1x0b8,X1x0b8 :end data, 8' -o ver
378
379Remember that bit zero is on the right side by default. Also notice that since we have no fifth byte an error is displayed.
380
381=begin html
382
383<pre style ="font-family: monospace; background-color: #000 ;">
384<span style = 'color:#fff;  color:#0f0; '>data            </span><span style = 'color:#fff;  color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 61 74 61 </span><span style = 'color:#fff;  color:#0f0; '>                                    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>Data</span><span style = 'color:#fff;  color:#0f0; '>            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
385</span><span style = 'color:#fff;  color:#ff0; '>.X1b1           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>08 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>-- -- -- 00    -----------------------0-------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
386</span><span style = 'color:#fff;  color:#0ff; '>.X3x8b4         </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>32 .. 35</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>Error: 36 bits needed but only 32 bits available</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>Error: 36 bits n</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
387</span><span style = 'color:#fff;  color:#f0f; '>.X4b8           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>32 .. 39</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>Error: 40 bits needed but only 32 bits available</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>Error: 40 bits n</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
388</span><span style = 'color:#fff;  color:#f00; '>.X1x0b8         </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>-- -- -- 74    ----------------01110100-------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>.bitfield: ---t </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
389</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>end data        </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000004</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>            </span><span style = 'color:#fff;  color:#ff0; '>3a 3a 48 65 78 44 75 6d </span><span style = 'color:#fff;  color:#ff0; '>            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>    </span><span style = 'color:#fff;  color:#ff0; '>::HexDum</span><span style = 'color:#fff;  color:#ff0; '>    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
390</span>
391</pre>
392
393=end html
394
395With B<BIT_ZERO_ON_LEFT> set
396
397=begin html
398
399<pre style ="font-family: monospace; background-color: #000 ;">
400<span style = 'color:#fff;  color:#0f0; '>data            </span><span style = 'color:#fff;  color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 61 74 61 </span><span style = 'color:#fff;  color:#0f0; '>                                    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>Data</span><span style = 'color:#fff;  color:#0f0; '>            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
401</span><span style = 'color:#fff;  color:#ff0; '>.X1b1           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>08 .. 08</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>-- -- -- 00    --------0----------------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>.bitfield: ---. </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
402</span><span style = 'color:#fff;  color:#0ff; '>.X3x8b4         </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>32 .. 35</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>Error: 36 bits needed but only 32 bits available</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>Error: 36 bits n</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
403</span><span style = 'color:#fff;  color:#f0f; '>.X4b8           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>32 .. 39</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>Error: 40 bits needed but only 32 bits available</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>Error: 40 bits n</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
404</span><span style = 'color:#fff;  color:#f00; '>.X1x0b8         </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>-- -- -- 61    --------01100001---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>.bitfield: ---a </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
405</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>end data        </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000004</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>            </span><span style = 'color:#fff;  color:#ff0; '>3a 3a 48 65 78 44 75 6d </span><span style = 'color:#fff;  color:#ff0; '>            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>    </span><span style = 'color:#fff;  color:#ff0; '>::HexDum</span><span style = 'color:#fff;  color:#ff0; '>    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
406</span>
407</pre>
408
409=end html
410
411=head2 Skip Ranges
412
413Say you have data with data that you are not interrested in seeing in the hexdump.
414
415  $>hdr -r 'magic, 5  :other,37  :uninterresting,45     :more, 20'
416
417=begin html
418
419<pre style ="font-family: monospace; background-color: #000 ;">
420<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 61 74 61 3a </span><span style = 'color:#fff;  color:#ff0; '>3a 48 65 78 44 75 6d 70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>Data:</span><span style = 'color:#fff;  color:#ff0; '>:HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>magic</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
421</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
422</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a </span><span style = 'color:#fff;  color:#0ff; '>0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>=========.</span><span style = 'color:#fff;  color:#0ff; '>.&apos;Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#0ff; '>uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
423</span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>64 65 63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>decial Range Dum</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
424</span><span style = 'color:#fff; '>00000040</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>70 65 72 27 20 20 77 69 74 68 20 63 6f 6c 6f 72 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>per&apos;  with color</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
425</span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>2c 20 62 69 74 66 69 </span><span style = 'color:#fff;  color:#f0f; '>65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>, bitfi</span><span style = 'color:#fff;  color:#f0f; '>elds and </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#f0f; '>more</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
426</span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>73 6b 69 70 20 72 61 6e 67 65 73                </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>skip ranges     </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>more</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
427</span>
428</pre>
429
430=end html
431
432Change the I<uninterresting> range definition to skip the data.
433
434  $>hdr -r 'magic, 5  :other,37  :uninterresting,X45     :more, 20'
435
436=begin html
437
438<pre style ="font-family: monospace; background-color: #000 ;">
439<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 61 74 61 3a </span><span style = 'color:#fff;  color:#ff0; '>3a 48 65 78 44 75 6d 70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>Data:</span><span style = 'color:#fff;  color:#ff0; '>:HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>magic</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
440</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
441</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a </span><span style = 'color:#fff;  color:#0ff; '>                  </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>=========.</span><span style = 'color:#fff;  color:#0ff; '>      </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>other</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#0ff; '>&gt;&gt;uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
442</span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>                     </span><span style = 'color:#fff;  color:#f0f; '>65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>       </span><span style = 'color:#fff;  color:#f0f; '>elds and </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>&gt;&gt;uninterresting</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#f0f; '>more</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
443</span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>73 6b 69 70 20 72 61 6e 67 65 73                </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>skip ranges     </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>more</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
444</span>
445</pre>
446
447=end html
448
449In vertical mode
450
451=begin html
452
453<pre style ="font-family: monospace; background-color: #000 ;">
454<span style = 'color:#fff;  color:#0f0; '>magic           </span><span style = 'color:#fff;  color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 61 74 61 3a </span><span style = 'color:#fff;  color:#0f0; '>                                 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>Data:</span><span style = 'color:#fff;  color:#0f0; '>           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
455</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>other           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000005</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>               </span><span style = 'color:#fff;  color:#ff0; '>3a 48 65 78 44 75 6d 70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>     </span><span style = 'color:#fff;  color:#ff0; '>:HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
456</span><span style = 'color:#fff;  color:#ff0; '>other           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000000b</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
457</span><span style = 'color:#fff;  color:#ff0; '>other           </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000001b</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a </span><span style = 'color:#fff;  color:#ff0; '>                  </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>=========.</span><span style = 'color:#fff;  color:#ff0; '>      </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
458</span><span style = 'color:#fff;  color:#0ff; '>&gt;&gt;uninterresting</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000002a</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000056</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>00 00 00 2d bytes skipped                       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>                </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
459</span><span style = 'color:#fff;  color:#f0f; '></span><span style = 'color:#fff;  color:#f0f; '>more            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000057</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>                     </span><span style = 'color:#fff;  color:#f0f; '>65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>       </span><span style = 'color:#fff;  color:#f0f; '>elds and </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
460</span><span style = 'color:#fff;  color:#f0f; '>more            </span><span style = 'color:#fff;  color:#f0f; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000009</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>73 6b 69 70 20 72 61 6e 67 65 73 </span><span style = 'color:#fff;  color:#f0f; '>               </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>skip ranges</span><span style = 'color:#fff;  color:#f0f; '>     </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
461</span>
462</pre>
463
464=end html
465
466=head2 Comment
467
468You can use comments to introduce the ranges that are going to be displayed next and thus make it easier to understand
469
470 	[
471 	  ['data header', 5, 'blue on_cyan'],
472 	  ['Next is a very interresting data section', #, 'bright_white on_red'],
473 	  ['data', 20, 'blue on_bright_yellow'],
474 	] ;
475
476
477  $>hdr -o vertical -r 'magic, 5  :first interresting data section,#, black on_bright_cyan    :other,37  :something,45 :second interresting data section,#,black on_bright_cyan   :other,37  :something,45 :We are done, #, black on_bright_cyan  :more, 20'
478
479
480=begin html
481
482<pre style ="font-family: monospace; background-color: #000 ;">
483<span style = 'color:#fff;  color:#0f0; '>magic           </span><span style = 'color:#fff;  color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 61 74 61 3a </span><span style = 'color:#fff;  color:#0f0; '>                                 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>Data:</span><span style = 'color:#fff;  color:#0f0; '>           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
484</span><span style = 'color:#fff;  color:#000;  background-color:#0ff; '>&quot;first interresting data section&quot;</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
485</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>other           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000005</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>               </span><span style = 'color:#fff;  color:#ff0; '>3a 48 65 78 44 75 6d 70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>     </span><span style = 'color:#fff;  color:#ff0; '>:HexDump::R</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
486</span><span style = 'color:#fff;  color:#ff0; '>other           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000000b</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>61 6e 67 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>ange.===========</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
487</span><span style = 'color:#fff;  color:#ff0; '>other           </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000001b</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a </span><span style = 'color:#fff;  color:#ff0; '>                  </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>=========.</span><span style = 'color:#fff;  color:#ff0; '>      </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
488</span><span style = 'color:#fff;  color:#0ff; '></span><span style = 'color:#fff;  color:#0ff; '>something       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>0000002a</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>                              </span><span style = 'color:#fff;  color:#0ff; '>0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>          </span><span style = 'color:#fff;  color:#0ff; '>.&apos;Hexa</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
489</span><span style = 'color:#fff;  color:#0ff; '>something       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000006</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>64 65 63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>decial Range Dum</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
490</span><span style = 'color:#fff;  color:#0ff; '>something       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000040</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000016</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>70 65 72 27 20 20 77 69 74 68 20 63 6f 6c 6f 72 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>per&apos;  with color</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
491</span><span style = 'color:#fff;  color:#0ff; '>something       </span><span style = 'color:#fff;  color:#0ff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000026</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>2c 20 62 69 74 66 69 </span><span style = 'color:#fff;  color:#0ff; '>                           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>, bitfi</span><span style = 'color:#fff;  color:#0ff; '>         </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
492</span><span style = 'color:#fff;  color:#000;  background-color:#0ff; '>&quot;second interresting data section&quot;</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
493</span><span style = 'color:#fff;  color:#f0f; '></span><span style = 'color:#fff;  color:#f0f; '>other           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000057</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>                     </span><span style = 'color:#fff;  color:#f0f; '>65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>       </span><span style = 'color:#fff;  color:#f0f; '>elds and </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
494</span><span style = 'color:#fff;  color:#f0f; '>other           </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000009</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>73 6b 69 70 20 72 61 6e 67 65 73 0a 0a 0a 49 4e </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>skip ranges...IN</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
495</span><span style = 'color:#fff;  color:#f0f; '>other           </span><span style = 'color:#fff;  color:#f0f; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000070</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000019</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>53 54 41 4c 4c 41 54 49 4f 4e 0a 2d </span><span style = 'color:#fff;  color:#f0f; '>            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>STALLATION.-</span><span style = 'color:#fff;  color:#f0f; '>    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
496</span><span style = 'color:#fff;  color:#f00; '></span><span style = 'color:#fff;  color:#f00; '>something       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>0000007c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>                                    </span><span style = 'color:#fff;  color:#f00; '>2d 2d 2d 2d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>            </span><span style = 'color:#fff;  color:#f00; '>----</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
497</span><span style = 'color:#fff;  color:#f00; '>something       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000080</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000004</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>2d 2d 2d 2d 2d 2d 2d 0a 0a 54 6f 20 69 6e 73 74 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>-------..To inst</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
498</span><span style = 'color:#fff;  color:#f00; '>something       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000090</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000014</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>61 6c 6c 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>all this module </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
499</span><span style = 'color:#fff;  color:#f00; '>something       </span><span style = 'color:#fff;  color:#f00; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>000000a0</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000024</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>74 79 70 65 20 74 68 65 20 </span><span style = 'color:#fff;  color:#f00; '>                     </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>type the </span><span style = 'color:#fff;  color:#f00; '>       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
500</span><span style = 'color:#fff;  color:#000;  background-color:#0ff; '>&quot;We are done&quot;</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
501</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>more            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>000000a9</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>                           </span><span style = 'color:#fff;  color:#ff0; '>66 6f 6c 6c 6f 77 69 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>         </span><span style = 'color:#fff;  color:#ff0; '>followi</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
502</span><span style = 'color:#fff;  color:#ff0; '>more            </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>000000b0</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000007</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>6e 67 3a 0a 0a 20 20 20 70 65 72 6c 20 </span><span style = 'color:#fff;  color:#ff0; '>         </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>ng:..   perl </span><span style = 'color:#fff;  color:#ff0; '>   </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
503</span>
504</pre>
505
506=end html
507
508=head2 Advanced Usage
509
510First, read the module documentation.
511
512=head3 dynamic range generation
513
514The parser below will alternatively return a 'from 0' or 'from 1' range description depending on the first byte of the data to display
515
516 sub my_parser
517	{
518	my ($dumper, $data, $offset) = @_ ;
519
520	my $first_byte = unpack ("x$offset C", $data) ;
521
522	$offset < length($data)
523		?  $first_byte == ord(0)
524			? ['from "0"', 5, 'bright_yellow']
525			: ['from "1"', 3, 'bright_green']
526		: undef ;
527	}
528 my $data = '01' x 20 ;
529 print $hdr->dump(\&my_parser, $data) ;
530
531=begin html
532
533<pre style ="font-family: monospace; background-color: #000 ;">
534<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>30 31 30 31 30 </span><span style = 'color:#fff;  color:#0f0; '>31 30 31 </span><span style = 'color:#fff;  color:#ff0; '>30 31 30 31 30 </span><span style = 'color:#fff;  color:#0f0; '>31 30 31 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>01010</span><span style = 'color:#fff;  color:#0f0; '>101</span><span style = 'color:#fff;  color:#ff0; '>01010</span><span style = 'color:#fff;  color:#0f0; '>101</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>5:from "0"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#0f0; '>3:from "1"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#ff0; '>5:from "0"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#0f0; '>3:from "1"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
535</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>30 31 30 31 30 </span><span style = 'color:#fff;  color:#0f0; '>31 30 31 </span><span style = 'color:#fff;  color:#ff0; '>30 31 30 31 30 </span><span style = 'color:#fff;  color:#0f0; '>31 30 31 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>01010</span><span style = 'color:#fff;  color:#0f0; '>101</span><span style = 'color:#fff;  color:#ff0; '>01010</span><span style = 'color:#fff;  color:#0f0; '>101</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>5:from "0"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#0f0; '>3:from "1"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#ff0; '>5:from "0"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#0f0; '>3:from "1"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
536</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>30 31 30 31 30 </span><span style = 'color:#fff;  color:#0f0; '>31 30 31                         </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>01010</span><span style = 'color:#fff;  color:#0f0; '>101        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>5:from "0"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#0f0; '>3:from "1"</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
537</span>
538</pre>
539
540=end html
541
542=head3 IPV4 header
543
544Below is the range description for an IPV4 header:
545
546 use strict ;
547 use warnings ;
548
549 my $IPV4_header =
550	[
551	['IPV4_header', '#', 'bright_white on_red'],
552		[
553			['Version, Header length,  Differentiated Services, Total Length', '#', 'blue on_cyan'],
554			['First 32 bits', 4],
555			['Version', 'b4'],
556			['Header length', 'x4b4'],
557			['Differentiated Services', 'x8b8'],
558				# Differentiated Services (DS)
559				# # bit 3: 0 = Normal Delay, 1 = Low Delay
560				# # bit 4: 0 = Normal Throughput, 1 = High Throughput
561				# # bit 5: 0 = Normal Reliability, 1 = High Reliability
562				# # bit 6: 0 = Normal Cost, 1 = Minimize Monetary Cost
563				# (defined by RFC 1349)
564				# # bit 7: never defined
565			['Total length', 'x16b16'],
566		],
567
568		[
569			['Identification, Flags, Fragment Offset', '#', 'blue on_cyan'],
570			['Second 32 bits', 4],
571			['Identification', 'b16'],
572
573			['reserved', 'x16b1'],
574			["Don't Fragment", 'x17b1'],
575			['More Fragments', 'x18b1'],
576				# bit 0: Reserved; must be zero. As an April Fools joke, proposed for use in RFC 3514 as the "Evil bit".
577				# bit 1: Don't Fragment (DF)
578				# bit 2: More Fragments (MF)
579
580			['Fragment Offset', 'x19b13'],
581		],
582
583		[
584			['Time to Live, Protocol, Header Checksum', '#', 'blue on_cyan'],
585			['Third 32 bits', 4],
586			['Time to Live', 'b8'],
587			['Protocol', 'x8b8'],
588			['Header Checksum', 'x16b16'],
589			[],
590		],
591
592		['Addresses and options', '#', 'blue on_cyan'],
593		['Source Address', 4],
594		['Destination Address', 4],
595		[
596		sub
597			{
598			my ($self, $data, $offset, $size, $range) = @_ ;
599
600			my ($header_length_chunk) = grep {$_->{NAME} eq 'Header length'} @{$self->{GATHERED}} ;
601			my $header_length = ord(substr($header_length_chunk->{DATA}, 0, 1)) & 0x0f  ;
602
603			if($header_length > 5)
604				{
605				return ['Options', 4, undef ,'header length > 5, extracting options'] ;
606				}
607			else
608				{
609				# Note that we could choose to return a comment range instead
610				#~ return ['header length < 5, no options', '#', undef, undef] ;
611
612				return undef, 'Skipping option field header length < 5';
613				}
614			}
615		],
616		['Data', '#', 'blue on_cyan'],
617		['Data', 128] # display some of the data
618	] ;
619
620Note that the B<Options> field  is an optional field that is present when the B<Header length> is  greater than 5. For the B<Options> field, we
621define subroutine which verifies the value of the B<Header length> and selectively returns a range description or nothing.
622
623In vertical mode
624
625 $> hdr -r t/parse_ipv4.pl -display_ascii_dump 0 -bit_zero_on_left -o ver
626
627=begin html
628
629<pre style ="font-family: monospace; background-color: #000 ;">
630<span style = 'color:#fff;  color:#fff;  background-color:#a00; '>&quot;IPV4_header&quot;</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
631</span><span style = 'color:#fff;  color:#00a;  background-color:#0aa; '>&quot;Version, Header length,  Differentiated Services, Total Length&quot;</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
632</span><span style = 'color:#fff;  color:#0f0; '>First 32 bits   </span><span style = 'color:#fff;  color:#0f0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 61 74 61 </span><span style = 'color:#fff;  color:#0f0; '>                                    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
633</span><span style = 'color:#fff;  color:#ff0; '>.Version        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>00 .. 03</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>-- -- -- 04    0100---------------------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
634</span><span style = 'color:#fff;  color:#0ff; '>.Header length  </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>04 .. 07</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>-- -- -- 04    ----0100------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
635</span><span style = 'color:#fff;  color:#f0f; '>.Differentiated </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>-- -- -- 61    --------01100001---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
636</span><span style = 'color:#fff;  color:#f00; '>.Total length   </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>16 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>-- -- 74 61    ----------------0111010001100001 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
637</span><span style = 'color:#fff;  color:#00a;  background-color:#0aa; '>&quot;Identification, Flags, Fragment Offset&quot;</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
638</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>Second 32 bits  </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000004</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>            </span><span style = 'color:#fff;  color:#ff0; '>3a 3a 48 65 </span><span style = 'color:#fff;  color:#ff0; '>                        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
639</span><span style = 'color:#fff;  color:#0ff; '>.Identification </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>00 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>-- -- 3a 3a    0011101000111010---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
640</span><span style = 'color:#fff;  color:#0f0; '>.reserved       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>16 .. 16</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>-- -- -- 00    ----------------0--------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
641</span><span style = 'color:#fff;  color:#0ff; '>.Don&apos;t Fragment </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>17 .. 17</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>-- -- -- 01    -----------------1-------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
642</span><span style = 'color:#fff;  color:#f00; '>.More Fragments </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>18 .. 18</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>-- -- -- 00    ------------------0------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
643</span><span style = 'color:#fff;  color:#f0f; '>.Fragment Offset</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>19 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>-- -- 08 65    -------------------0100001100101 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
644</span><span style = 'color:#fff;  color:#00a;  background-color:#0aa; '>&quot;Time to Live, Protocol, Header Checksum&quot;</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
645</span><span style = 'color:#fff;  color:#fff; '></span><span style = 'color:#fff;  color:#fff; '>Third 32 bits   </span><span style = 'color:#fff;  color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000008</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#fff; '>                        </span><span style = 'color:#fff;  color:#fff; '>78 44 75 6d </span><span style = 'color:#fff;  color:#fff; '>            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
646</span><span style = 'color:#fff;  color:#0f0; '>.Time to Live   </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>00 .. 07</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>-- -- -- 78    01111000------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
647</span><span style = 'color:#fff;  color:#ff0; '>.Protocol       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>-- -- -- 44    --------01000100---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
648</span><span style = 'color:#fff;  color:#0ff; '>.Header Checksum</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>16 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>-- -- 75 6d    ----------------0111010101101101 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
649</span><span style = 'color:#fff;  color:#00a;  background-color:#0aa; '>&quot;Addresses and options&quot;</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
650</span><span style = 'color:#fff;  color:#f0f; '></span><span style = 'color:#fff;  color:#f0f; '>Source Address  </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>0000000c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>                                    </span><span style = 'color:#fff;  color:#f0f; '>70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
651</span><span style = 'color:#fff;  color:#f00; '>Destination Addr</span><span style = 'color:#fff;  color:#f00; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>61 6e 67 65 </span><span style = 'color:#fff;  color:#f00; '>                                    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
652</span><span style = 'color:#fff;  color:#00a;  background-color:#0aa; '>&quot;Data&quot;</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
653</span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff;  color:#ff0; '>Data            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000014</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>            </span><span style = 'color:#fff;  color:#ff0; '>0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
654</span><span style = 'color:#fff;  color:#ff0; '>Data            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000000c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
655</span><span style = 'color:#fff;  color:#ff0; '>Data            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000001c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>64 65 63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
656</span><span style = 'color:#fff;  color:#ff0; '>Data            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000040</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000002c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>70 65 72 27 20 20 77 69 74 68 20 63 6f 6c 6f 72 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
657</span><span style = 'color:#fff;  color:#ff0; '>Data            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000003c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>2c 20 62 69 74 66 69 65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
658</span><span style = 'color:#fff;  color:#ff0; '>Data            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000004c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>73 6b 69 70 20 72 61 6e 67 65 73 0a 0a 0a 49 4e </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
659</span><span style = 'color:#fff;  color:#ff0; '>Data            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000070</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000005c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>53 54 41 4c 4c 41 54 49 4f 4e 0a 2d 2d 2d 2d 2d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
660</span><span style = 'color:#fff;  color:#ff0; '>Data            </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000080</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000006c</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>2d 2d 2d 2d 2d 2d 2d 0a 0a 54 6f 20 69 6e 73 74 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
661</span><span style = 'color:#fff;  color:#ff0; '>Data            </span><span style = 'color:#fff;  color:#ff0; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>00000090</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>0000007c</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>61 6c 6c 20 </span><span style = 'color:#fff;  color:#ff0; '>                                    </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
662</span>
663</pre>
664
665=end html
666
667In horizontal mode
668
669 $> hdr -r t/parse_ipv4.pl -display_ascii_dump 0 -bit_zero_on_left -display_bitfields 1 -display_comment_range 0
670
671=begin html
672
673<pre style ="font-family: monospace; background-color: #000 ;">
674<span style = 'color:#fff; '>00000000</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>44 61 74 61 </span><span style = 'color:#fff;  color:#ff0; '>3a 3a 48 65 </span><span style = 'color:#fff;  color:#fff; '>78 44 75 6d </span><span style = 'color:#fff;  color:#f0f; '>70 3a 3a 52 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>First 32 bits</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#ff0; '>Second 32 bits</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#fff; '>Third 32 bits</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#f0f; '>Source Address</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
675</span><span style = 'color:#fff;  color:#ff0; '>00 .. 03</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>First 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>-- -- -- 04    0100---------------------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>.Version        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
676</span><span style = 'color:#fff;  color:#0ff; '>04 .. 07</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>First 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>-- -- -- 04    ----0100------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>.Header length  </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
677</span><span style = 'color:#fff;  color:#f0f; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>First 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>-- -- -- 61    --------01100001---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>.Differentiated </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
678</span><span style = 'color:#fff;  color:#f00; '>16 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>First 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>-- -- 74 61    ----------------0111010001100001 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>.Total length   </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
679</span><span style = 'color:#fff;  color:#0ff; '>00 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Second 3</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>-- -- 3a 3a    0011101000111010---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>.Identification </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
680</span><span style = 'color:#fff;  color:#0f0; '>16 .. 16</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Second 3</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>-- -- -- 00    ----------------0--------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>.reserved       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
681</span><span style = 'color:#fff;  color:#0ff; '>17 .. 17</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Second 3</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>-- -- -- 01    -----------------1-------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>.Don&apos;t Fragment </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
682</span><span style = 'color:#fff;  color:#f00; '>18 .. 18</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Second 3</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>-- -- -- 00    ------------------0------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>.More Fragments </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
683</span><span style = 'color:#fff;  color:#f0f; '>19 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Second 3</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>-- -- 08 65    -------------------0100001100101 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f0f; '>.Fragment Offset</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
684</span><span style = 'color:#fff;  color:#0f0; '>00 .. 07</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#fff; '>Third 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>-- -- -- 78    01111000------------------------ </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0f0; '>.Time to Live   </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
685</span><span style = 'color:#fff;  color:#ff0; '>08 .. 15</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#fff; '>Third 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>-- -- -- 44    --------01000100---------------- </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>.Protocol       </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
686</span><span style = 'color:#fff;  color:#0ff; '>16 .. 31</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#fff; '>Third 32</span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>-- -- 75 6d    ----------------0111010101101101 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#0ff; '>.Header Checksum</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
687</span><span style = 'color:#fff; '>00000010</span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '></span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>61 6e 67 65 </span><span style = 'color:#fff;  color:#ff0; '>0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#f00; '>Destination Addr</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff;  color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
688</span><span style = 'color:#fff; '>00000020</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 27 48 65 78 61 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
689</span><span style = 'color:#fff; '>00000030</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>64 65 63 69 61 6c 20 52 61 6e 67 65 20 44 75 6d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
690</span><span style = 'color:#fff; '>00000040</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>70 65 72 27 20 20 77 69 74 68 20 63 6f 6c 6f 72 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
691</span><span style = 'color:#fff; '>00000050</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>2c 20 62 69 74 66 69 65 6c 64 73 20 61 6e 64 20 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
692</span><span style = 'color:#fff; '>00000060</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>73 6b 69 70 20 72 61 6e 67 65 73 0a 0a 0a 49 4e </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
693</span><span style = 'color:#fff; '>00000070</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>53 54 41 4c 4c 41 54 49 4f 4e 0a 2d 2d 2d 2d 2d </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
694</span><span style = 'color:#fff; '>00000080</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>2d 2d 2d 2d 2d 2d 2d 0a 0a 54 6f 20 69 6e 73 74 </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
695</span><span style = 'color:#fff; '>00000090</span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>        </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>61 6c 6c 20                                     </span><span style = 'color:#fff; '> </span><span style = 'color:#fff;  color:#ff0; '>Data</span><span style = 'color:#fff; '>, </span><span style = 'color:#fff; '> </span><span style = 'color:#fff; '>
696</span>
697</pre>
698
699=end html
700
701=head3 Comments that help
702
703Remember that you can, while generating your ranges, assign the comment field
704
705  ['range_name', 4, 'red', 'comment of great help']
706
707You can also pass a sub reference in place of the comment. The sub will be called just before the range is displayed. It is passed information
708about the data to be displayed (data and offset). This allows you to dynamically generate a comment string.
709
710	['size', 1, undef,
711		sub
712			{
713			my ($self, $data, $offset, $size, $range) = @_ ;
714
715			my $size = ord(substr($data, $offset, 1))  ;
716
717			for($size)
718				{
719				$_ == 1 and do {return 'size is: S' } ;
720				$_ == 2 and do {return  'size is: M'} ;
721				$_ == 3 and do {return 'size is: L'} ;
722				$_ == 4 and do {return  'size is: XL'} ;
723
724				return 'Error in size range!' ;
725				}
726			}
727	],
728
729Which would generate :
730
731 ...
732 size             00000022 00000000 32                                               2                Error in size range!
733 size             00000023 00000000 01                                               .                size is: S
734 ...
735
736=head2 Let the computer do the heavy lifting
737
738B<hdr> may be a nice tool to run from the command line but you can also use it in shell scripts to generate reports. I generally write I<pod> so I let I<hdr> generate my pod
739snippets with embeded html hexdumps.
740
741 printf "=head1 MY REPORT\n\n" > report.pod
742 printf "=head2 The data\n\n" >> report.pod
743
744 hdr -r 'A,55:B,5:bf,x3b5:C,18:D,10'  Changes -col -rul -format HTML -display_command_line -start_tag '=begin html' -end_tag '=end html' >> report.pod
745 hdr -r 'B,5:bf,x3b5:C,18:D,10'  Changes -col -rul -offset 55 -format HTML -display_command_line -start_tag '=begin html' -end_tag '=end html' >> report.pod
746 hdr -r 'B,5:bf,x3b5:C,18:D,10'  Changes -col -rul -offset 55 -offset_start 55 -format HTML -display_command_line -start_tag '=begin html' -end_tag '=end html' >> report.pod
747
748 echo "=head2 Nicely synchronized\n\n" >> report.pod
749 hdr -r 'B,5:bf,x3b5:C,18:D,10'  Changes -col -rul -offset 55 -offset_start 55 -format HTML -display_command_line -start_color bright_yellow -start_tag '=begin html' -end_tag '=end html' >> report.pod
750
751 pod2html report.pod > report.html
752
753=head1 Bash completion script
754
755B<hdr> can generate a bash completion script
756
757 $> hdr --generate_bash_completion > hdr_completion
758 $> source hdr_completion
759
760=head1 Helping out
761
762You contribute when you:
763
764=over 2
765
766=item * report errors
767
768=item * send some examples of your data/output
769
770=item * send parsers or other scripts in which you use hdr or B<Data::HexDump::Range>
771
772=item * send new requirement, patches, documentation enhancements
773
774=item * pass the word around so more people use hdr and I get more feedback
775
776=item * plant a tree, save a cat/dog or both, bike instead for driving, spread some love around you, :)
777
778=back
779
780=head1 AUTHOR
781
782	Nadim ibn hamouda el Khemir
783	CPAN ID: NKH
784	mailto: nadim@cpan.org
785
786=head1 COPYRIGHT & LICENSE
787
788Copyright 2010 Nadim Khemir.
789
790This program is free software; you can redistribute it and/or
791modify it under the terms of either:
792
793=over 4
794
795=item * the GNU General Public License as published by the Free
796Software Foundation; either version 1, or (at your option) any
797later version, or
798
799=item * the Artistic License version 2.0.
800
801=back
802
803=head1 SUPPORT
804
805You can also look for information at:
806
807=over 4
808
809=item * RT: CPAN's request tracker
810
811Please report any bugs or feature requests to  L<bug-data-hexdump-range@rt.cpan.org>.
812
813=back
814
815=head1 SEE ALSO
816
817B<hexd> from libma L<http://www.ioplex.com/~miallen/libmba/>
818
819=cut
820