glenda.party
term% ls -F
term% cat index.txt
ENCODE(2)                     System Calls Manual                    ENCODE(2)



NAME
       dec64, enc64, dec32, enc32, dec16, enc16, encodefmt - encoding byte ar‐
       rays 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 (in‐
       cluding 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.

       Encodefmt can be used with fmtinstall(2) and print(2) to print  encoded
       representations of byte arrays.  The verbs are

       H      base  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/u32.c
       /sys/src/libc/port/u64.c
       /sys/src/libc/port/encodefmt.c



                                                                     ENCODE(2)