`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`

(), and

`BN_print`

() first appeared in SSLeay 0.5.1.

`BN_print_fp`

() first appeared in SSLeay
0.6.0.

`BN_bn2hex`

(),

`BN_bn2dec`

(),

`BN_hex2bn`

(),

`BN_dec2bn`

(),

`BN_bn2mpi`

(), and

`BN_mpi2bn`

() first appeared in SSLeay 0.9.0.
All these functions have been available since

OpenBSD
2.4.

`BN_asc2bin`

() first appeared in OpenSSL 1.0.0
and has been available since

OpenBSD 4.9.