xer 0.0.5-alpha

Byte stream conversion swiss army knife
# xer

Command line byte encoding swiss army knife. The goal is to be the `iconv` of byte stream encodings.

Have you ever spent precious time converting something like `0xde, 0xad,\r\n0xbe, 0xef` to `\xde\xad\xbe\xef`? If so, then `xer` is for you.


## Install

From crates.io:

```
cargo install xer
```

From source:

```
git clone https://github.com/v-p-b/xer
cd xer
cargo install --path .
```


## Usage

```
Usage: xer [OPTIONS]

Options:
  -f, --from <FROM>
          Input format specifier

          Possible values:
          - hex:     2-digit hex encoding, optionally separated by whitespace
          - escaped: \xHH encoding, no separator
          - c:       0xHH encoding, values separated with commas and whitespace
          - java:    0xHH encoding, with optional negative sign, values separated with commas and whitespace
          - bin:     0bBBBBBBBB encoded binary, values separated with commas and whitespace
          - dec:     Decimal
          - s-dec:   Signed Decimal
          - raw:     Raw bytes

  -t, --to <TO>
          Output format specifier

          Possible values:
          - hex:     2-digit hex encoding, optionally separated by whitespace
          - escaped: \xHH encoding, no separator
          - c:       0xHH encoding, values separated with commas and whitespace
          - java:    0xHH encoding, with optional negative sign, values separated with commas and whitespace
          - bin:     0bBBBBBBBB encoded binary, values separated with commas and whitespace
          - dec:     Decimal
          - s-dec:   Signed Decimal
          - raw:     Raw bytes

  -i, --input <INPUT>
          Input file (default: stdin)

  -o, --output <OUTPUT>
          Output file (default: stdout)

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version
```

If no `from` is specified the tool tries to auto-detect textual formats. To parse raw bytes you have to explicitly specify `-f raw`.

The default output format is C (e.g. `0xde,0xad,0xbe,0ef`). Output serialization aims to produce output that is easy to post-process:

- C delimiters are a single "," (no whitespace)
- Hex delimiters are a single space (so byte values can be easily split)

## TODO

* ~~Signed values (as you know, three billion devices run Java)~~
* More formats (PR's welcome)
* More tests