Giter Club home page Giter Club logo

binpp's Introduction

binpp - Erlang Binary Pretty Printer

Build Status

Example usage:

1> Bin.
<<12,242,207,49,82,69,45,130,212,69,80,88,8,81,23,36,86,7,
  68,19,133,97,51,216,56,145,88,8,81,...>>
2> binpp:pprint(Bin).
0000 0C F2 CF 31 52 45 2D 82 D4 45 50 58 08 51 17 24  .òÏ1RE-�ÔEPX.Q.$
0001 56 07 44 13 85 61 33 D8 38 91 58 08 51 17 24 56  V.D.�a3Ø8�X.Q.$V
0002 0A 14 20 4E 24 16 09 60 F4 0A 15 11 01 30 13 89  .. N$..`ô....0.�
0003 05 81 0F 09 15 C5 61 33 D8 54 91 52 5D 81 17 24  .�...Åa3ØT�R]�.$
0004 11 14 60 23 D1 3D 55 80                          ..`#Ñ=U�
ok

Binpp will use io:format to output the formatted binary by default, however there are options making pprint functions return formatted data instead of performing direct IO write:

1> Bin2 = <<"foo bar baz">>.
<<"foo bar baz">>
2> binpp:pprint(Bin2, [{return, iolist}]).
[["0000",32,"66 6F 6F 20 62 61 72 20 62 61 7A                ",32,
  "foo bar baz","\n"]]
3> binpp:pprint(Bin2, [{return, binary}]).
<<"0000 66 6F 6F 20 62 61 72 20 62 61 7A                 foo bar baz\n">>

You may use a custom printer function as well:

4> binpp:pprint(Bin2, [{printer, fun(O) -> io:format("~s~n", [O]) end}]).
0000 66 6F 6F 20 62 61 72 20 62 61 7A                 foo bar baz

ok

An additional API is provided for printing binary fragments:

5> binpp:pprint(Bin2, {0, 3}, []).
0000 66 6F 6F                                         foo

Also, binary byte-to-byte comparsion:

6> binpp:compare(<<1,2,1024:512,3,4>>, <<1,3,1024:512,5,6>>).
-- 02 -- -- -- -- -- -- -- -- -- -- -- -- -- --   -- 03 -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --   -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --   -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --   -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- 03 04                                       -- -- 05 06
ok

Plus a handy little helper:

7> binpp:compare(<<1,2,255,3,1024:512>>, binpp:from_str("01 02 FF CC")).
-- -- -- 03 00 00 00 00 00 00 00 00 00 00 00 00   -- -- -- CC ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
00 00 04 00                                       ?? ?? ?? ??
ok

Edoc available at http://jtendo.github.com/binpp/doc/.

That's all folks!

binpp's People

Contributors

aerosol avatar andrzejsliwa avatar ates avatar benbro avatar voluntas avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.