**BN_bn2bin**,

**BN_bin2bn**,

**BN_bn2hex**,

**BN_bn2dec**,

**BN_hex2bn**,

**BN_dec2bn**,

**BN_asc2bn**,

**BN_print**,

**BN_print_fp**,

**BN_bn2mpi**,

**BN_mpi2bn**
—

format conversions
**#include
<openssl/bn.h>**
`int`
**BN_bn2bin**(

`const BIGNUM
*a`,

`unsigned char *to`);

`BIGNUM *`
**BN_bin2bn**(

`const unsigned
char *s`,

`int len`,

`BIGNUM *ret`);

`char *`
**BN_bn2hex**(

`const BIGNUM
*a`);

`char *`
**BN_bn2dec**(

`const BIGNUM
*a`);

`int`
**BN_hex2bn**(

`BIGNUM
**a`,

`const char *str`);

`int`
**BN_dec2bn**(

`BIGNUM
**a`,

`const char *str`);

`int`
**BN_asc2bn**(

`BIGNUM
**a`,

`const char *str`);

`int`
**BN_print**(

`BIO *fp`,

`const BIGNUM *a`);

`int`
**BN_print_fp**(

`FILE
*fp`,

`const BIGNUM *a`);

`int`
**BN_bn2mpi**(

`const BIGNUM
*a`,

`unsigned char *to`);

`BIGNUM *`
**BN_mpi2bn**(

`unsigned char
*s`,

`int len`,

`BIGNUM *ret`);

**BN_bn2bin**() converts the absolute value of

`a` into big-endian form and stores it at

`to`.

`to` must
point to

**BN_num_bytes**(

`a`)
bytes of memory.

**BN_bin2bn**() converts the positive integer in
big-endian form of length

`len` at

`s` into a

`BIGNUM` and places it in

`ret`. If

`ret`
is

`NULL`

, a new

`BIGNUM` is created.

**BN_bn2hex**() and

**BN_bn2dec**() return printable strings containing
the hexadecimal and decimal encoding of

`a`
respectively. For negative numbers, the string is prefaced with a leading
minus sign. The string must be freed later using

free(3).

**BN_hex2bn**() interprets

`str` as a hexadecimal number. The string may
start with a minus sign (‘-’). Conversion stops at the first
byte that is not a hexadecimal digit. The number is converted to a

`BIGNUM` and stored in
*

`a`. If *

`a` is

`NULL`

, a new

`BIGNUM` is created. If

`a` is

`NULL`

,
it only computes the number's length in hexadecimal digits. A "negative
zero" is converted to zero.

**BN_dec2bn**() is
the same using the decimal system.

**BN_asc2bn**()
infers the number base from an optional prefix. If

`str` starts with “0x” or
“0X”, it calls

**BN_hex2bn**(),
otherwise

**BN_dec2bn**(). If the number is negative,
the minus sign can be given before or after the prefix.

**BN_print**() and

**BN_print_fp**() write the hexadecimal encoding of

`a`, with a leading minus sign for negative
numbers, to the

`BIO` or

`FILE` `fp`.

**BN_bn2mpi**() and

**BN_mpi2bn**() convert

`BIGNUM`s from and to a format that consists of
the number's length in bytes represented as a 4-byte big-endian number, and
the number itself in big-endian format, where the most significant bit signals
a negative number (the representation of numbers with the MSB set is prefixed
with a NUL byte).

**BN_bn2mpi**() stores the representation of

`a` at

`to`,
where

`to` must be large enough to hold the
result. The size can be determined by calling

**BN_bn2mpi**(

`a`,

`NULL`).

**BN_mpi2bn**() converts the

`len` bytes long representation at

`s` to a

`BIGNUM` and stores it at

`ret`, or in a newly allocated

`BIGNUM` if

`ret` is

`NULL`

.

**BN_bn2bin**() returns the length of the big-endian
number placed at

`to`.

**BN_bin2bn**() returns the

`BIGNUM`, or

`NULL`

on error.

**BN_bn2hex**() and

**BN_bn2dec**() return a NUL-terminated string, or

`NULL`

on error.

**BN_hex2bn**() and

**BN_dec2bn**() return the number's length in
hexadecimal or decimal digits or 0 on error, in which case no new

`BIGNUM` is created.

**BN_asc2bn**() returns 1 on success or 0 on error,
in which case no new

`BIGNUM` is created.

**BN_print_fp**() and

**BN_print**() return 1 on success, 0 on write
errors.

**BN_bn2mpi**() returns the length of the
representation.

**BN_mpi2bn**() returns the

`BIGNUM`, or

`NULL`

on error.

The error codes can be obtained by

ERR_get_error(3).

BN_new(3),

BN_num_bytes(3),

BN_zero(3),

ERR_get_error(3)
**BN_bn2bin**(),

**BN_bin2bn**(),

**BN_print_fp**(), and

**BN_print**() are available in all versions of
SSLeay and OpenSSL.

**BN_bn2hex**(),

**BN_bn2dec**(),

**BN_hex2bn**(),

**BN_dec2bn**(),

**BN_bn2mpi**(), and

**BN_mpi2bn**() were added in SSLeay 0.9.0.