Test::HexDifferences::HexDump - Format binary to hexadecimal strings


NAME

Test::HexDifferences::HexDump - Format binary to hexadecimal strings


VERSION

0.002


SYNOPSIS

    use Test::HexDifferences::HexDump;
    $string = hex_dump(
        $binary,
    );
    $string = hex_dump(
        $binary,
        {
            address => $start_address,
            format  => "%a : %4C : %d\n",
        }
    );

Format elements

Every format element in the format string is starting with % like sprintf.

Data format

It is not very clever to use little-endian formats for tests. There is a fallback to bytes if multibyte formats can not displayed.

 %C  - unsigned char
 %S  - unsigned 16-bit
 %S< - unsigned 16-bit, little-endian
 %S> - unsigned 16-bit, big-endian
 %v  - unsigned 16-bit, little-endian
 %n  - unsigned 16-bit, big-endian
 %L  - unsigned 32-bit
 %L< - unsigned 32-bit, little-endian
 %L> - unsigned 32-bit, big-endian
 %V  - unsigned 32-bit, little-endian
 %N  - unsigned 32-bit, big-endian
 %Q  - unsigned 64-bit
 %Q< - unsigned 64-bit, little-endian
 %Q> - unsigned 64-bit, big-endian

Address format

 %a  - 16 bit address
 %4a - 16 bit address
 %8a - 32 bit address

ascii format

It can not display all chars. Fist it must be a printable ascii char. It can not be anything of space, q{.}, q{'}, q{"} or q{\}. Otherwise q{.} will be printed.

 %d - display ascii

Repetition

 %*x - repetition endless
 %1x - repetition 1 time
 %2x - repetition 2 times
 ...

Special formats

 %\n - ignore \n

Default format

The default format is:

 "%a : %4C : %d\n"

or fully written as

 "%a : %4C : %d\n%*x"

Complex formats

The %...x allows to write mixed formats e.g.

 Format:
  %a : %N %4C : %d\n%1x%
  %a : %n %2C : %d\n%*x
 Input:
    \0x01\0x23\0x45\0x67\0x89\0xAB\0xCD\0xEF
    \0x01\0x23\0x45\0x67
    \0x89\0xAB\0xCD\0xEF
 Output:
    0000 : 01234567 89 AB CD EF : .#-Eg...
    0008 : 0123 45 67 : .#-E
    000C : 89AB CD EF : g...


EXAMPLE

Inside of this Distribution is a directory named example. Run this *.t files.


DESCRIPTION

This is a formatter for binary data.


SUBROUTINES/METHODS

subroutine hex_dump

    $string = hex_dump(
        $binary,
        {
            address => $display_start_address,
            format  => $format_string,
        }
    );


DIAGNOSTICS

nothing


CONFIGURATION AND ENVIRONMENT

nothing


DEPENDENCIES

Hash::Util

Perl6::Export::Attrs


INCOMPATIBILITIES

none


BUGS AND LIMITATIONS

none


SEE ALSO

Test::HexDifferences

Data::Hexdumper inspired by


AUTHOR

Steffen Winkler


LICENSE AND COPYRIGHT

Copyright (c) 2012, Steffen Winkler <steffenw at cpan.org>. All rights reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.