NAME
dec64, enc64, dec32, enc32, dec16, enc16, dec64x, enc64x, dec32x,
enc32x, dec64chr, enc64chr, dec32chr, enc32chr, dec16chr, enc16chr,
encodefmt – encoding byte arrays as strings |
SYNOPSIS
#include <u.h> #include <libc.h> int dec64(uchar *out, int lim, char *in, int n) int dec64x(uchar *out, int lim, char *in, int n, int (*map)(int)) int enc64(char *out, int lim, uchar *in, int n) int enc64x(char *out, int lim, uchar *in, int n, int (*map)(int)) int dec32(uchar *out, int lim, char *in, int n) int dec32x(uchar *out, int lim, char *in, int n, int (*map)(int)) int enc32(char *out, int lim, uchar *in, int n) int enc32x(char *out, int lim, uchar *in, int n, int (*map)(int)) int dec16(uchar *out, int lim, char *in, int n) int enc16(char *out, int lim, uchar *in, int n) int dec64chr(int c) int enc64chr(int o) int dec32chr(int c) int enc32chr(int o) int dec16chr(int c) int enc16chr(int o)
int encodefmt(Fmt*) |
DESCRIPTION
The functions described here handle encoding and decoding of bytes
to printable ASCII strings as specified by RFC4648. 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 (including null), is too small. 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. Dec16chr, dec32chr and dec64chr return the value for a symbol of the alphabet or –1 when the symbol is not in the alphabet. Enc16chr, enc32chr and enc64chr encode a symbol of the alphabet given a value. if the value is out of range then zero is returned.
The enc64x and enc32x variants are identical to the above, except
that they take a function mapping from an arbitrary index in the
alphabet to the encoded character. For example, in the following
32–character alphabet,
Encodefmt can be used with fmtinstall(2) and print(2) to print
encoded representations of byte arrays. The verbs are
The length of the array is specified as f2. For example, to display
a 15 byte array as hex:
|
SOURCE
/sys/src/libc/port/u16.c /sys/src/libc/port/u32.c /sys/src/libc/port/u64.c /sys/src/libc/port/encodefmt.c |
HISTORY
In Jan 2018, base 32 encoding was changed from non–standard to
standard RFC4648 alphabet. old: 23456789abcdefghijkmnpqrstuvwxyz new: ABCDEFGHIJKLMNOPQRSTUVWXYZ234567 |