# netstring
[](https://hex.pm/packages/netstring)
[](https://hexdocs.pm/netstring/)
A Gleam library for encoding and decoding [netstrings](https://cr.yp.to/proto/netstrings.txt) - a simple format for encoding byte strings with explicit lengths.
## Installation
```sh
gleam add netstring
```
## Usage
### Encoding
```gleam
import netstring
netstring.encode(<<"hello">>)
// -> <<"5:hello,">>
netstring.encode(<<>>)
// -> <<"0:,">>
// Works with arbitrary binary data
netstring.encode(<<0, 255, 128>>)
// -> <<"3:", 0, 255, 128, ",">>
```
### Decoding
The decoder returns both the decoded data and any remaining bytes, making it suitable for streaming protocols:
```gleam
import netstring
netstring.decode(<<"5:hello,">>)
// -> Ok(#(<<"hello">>, <<>>))
// Multiple netstrings in a buffer
netstring.decode(<<"5:hello,5:world,">>)
// -> Ok(#(<<"hello">>, <<"5:world,">>))
```
### Handling Incomplete Data
When data is incomplete, the decoder returns `NeedMore` - buffer more data and try again:
```gleam
import netstring.{NeedMore}
netstring.decode(<<"5:hel">>)
// -> Error(NeedMore)
```
## Documentation
Full API documentation is available at [hexdocs.pm/netstring](https://hexdocs.pm/netstring).