12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- .TH ENCODE 2
- .EQ
- delim $$
- .EN
- .SH NAME
- dec64, enc64, dec32, enc32, dec16, enc16, encodefmt \- encoding byte arrays as strings
- .SH SYNOPSIS
- .B #include <u.h>
- .br
- .B #include <libc.h>
- .PP
- .B
- int dec64(uchar *out, int lim, char *in, int n)
- .PP
- .B
- int enc64(char *out, int lim, uchar *in, int n)
- .PP
- .B
- int dec32(uchar *out, int lim, char *in, int n)
- .PP
- .B
- int enc32(char *out, int lim, uchar *in, int n)
- .PP
- .B
- int dec16(uchar *out, int lim, char *in, int n)
- .PP
- .B
- int enc16(char *out, int lim, uchar *in, int n)
- .PP
- .B
- int encodefmt(Fmt*)
- .SH DESCRIPTION
- .IR Enc16 ,
- .I enc32
- and
- .I 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
- .IR 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.
- .PP
- .IR Dec16 ,
- .I dec32
- and
- .I 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.
- .PP
- .I Encodefmt
- can be used with
- .IR fmtinstall (2)
- and
- .IR print (2)
- to print encoded representations of byte arrays.
- The verbs are
- .TP 3
- .B H
- base 16 (i.e. hexadecimal). The default encoding is
- in upper case. The
- .B l
- flag forces lower case.
- .TP
- .B <
- base 32
- .TP
- .B [
- base 64 (same as MIME)
- .PD
- .PP
- The length of the array is specified as
- .IR f2 .
- For example, to display a 15 byte array as hex:
- .IP
- .EX
- char x[15];
- fmtinstall('H', encodefmt);
- print("%.*H\\n", sizeof x, x);
- .EE
- .SH SOURCE
- .B /sys/src/libc/port/u[136][246].c
|