delim $$

NAME
dec64, enc64, dec32, enc32, dec16, enc16, encodefmt – encoding byte arrays as strings

SYNOPSIS
#include <u.h>
#include <libc.h>

int    dec64(uchar *out, int lim, char *in, int n)

int    enc64(char *out, int lim, uchar *in, int n)

int    dec32(uchar *out, int lim, char *in, int n)

int    enc32(char *out, int lim, uchar *in, int n)

int    dec16(uchar *out, int lim, char *in, int n)

int    enc16(char *out, int lim, uchar *in, int n)

int    encodefmt(Fmt*)

DESCRIPTION
Enc16, enc32 and enc64 create null terminated strings. They return the size of the encoded string (without the null) or –1 if the encoding fails. The encoding fails if lim, the length of the output buffer, is too small. They require $2 n + 1$, ${ 8 n + 4 } over 5 + 1$ and $4 { { n + 2 } over 3 } + 1$ bytes, respectively.

Dec16, dec32 and dec64 return the number of bytes decoded or –1 if the decoding fails. The decoding fails if the output buffer is not large enough or, for base 32, if the input buffer length is not a multiple of 8.

Encodefmt can be used with fmtinstall(2) and print(2) to print encoded representations of byte arrays. The verbs are
Hbase 16 (i.e. hexadecimal). The default encoding is in upper case. The l flag forces lower case.
<base 32
[base 64 (same as MIME)

The length of the array is specified as f2. For example, to display a 15 byte array as hex:
char x[15];
fmtinstall('H', encodefmt);
print("%.*H\n", sizeof x, x);

SOURCE
/sys/src/libc/port/u[136][246].c
Copyright © 2024 Alcatel-Lucent. All rights reserved.