# Documentation/Calc Functions/HEX2OCT

TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate

## Function name:

HEX2OCT

## Category:

Add-in

## Summary:

Converts a hexadecimal number (base-16) to its octal (base-8) equivalent. The input hexadecimal number must correspond to a decimal number *d* in the range -2^{29} ≤ *d* < 2^{29}.

## Syntax:

HEX2OCT(**Number**[; **Places**])

## Returns:

Returns a text string comprising up to 10 octal characters (0…7), which is the octal number in two’s complement form that corresponds to the specified hexadecimal number.

## Arguments:

**Number** is a string or a number, or a reference to a cell containing one of those types, which gives the hexadecimal number that is to be converted to octal. The hexadecimal number must comprise no more than 10 characters and should correspond to a decimal number in the range -2^{29} ≤ *d* < 2^{29}. If the hexadecimal number contains any letters (a…f or A…F; the case of these characters is not significant), it must either be in a referenced cell or passed as a string argument in quotation marks.

**Places** is an integer in the range 1 to 10, or a reference to a cell containing that value, which is the number of characters that should be returned for a positive **Number**. **Places** is ignored for negative values of **Number**, when HEX2OCT always returns 10 characters. The default for positive values of **Number** is for the returned string to occupy as many characters as necessary to accommodate the octal representation, but you can set the value of **Places** to add leading zeroes where necessary.

**Number**should use the standard two's complement representation, so that positive numbers are hexadecimal 0 to 1FFFFFFF (0 to 2^{29}-1 decimal) and negative numbers are hexadecimal FFFFFFFFFF to FFE0000000 (-1 to -2^{29}decimal). Negative numbers must be 10 characters long with the leftmost bit set to 1; positive numbers can comprise less than 10 characters.- If
**Number**does not specify a valid hexadecimal number, then HEX2OCT reports an invalid argument error (Err:502). This may arise, for example, if**Number**contains more than 10 characters or if it contains any character other than 0…9, a…f, or A…F. - If a hexadecimal value containing one or more letters is passed directly to the function and is not surrounded by quotation marks, HEX2OCT reports a #NAME? error.
- If
**Number**is a string comprising no characters, or a reference to an empty cell, HEX2OCT returns 0 (possibly with leading zeroes, depending on the value of**Places**). - Although the content of
**Number**may appear to be decimal if it contains no letters, HEX2OCT will interpret it correctly.

- If
**Places**is non-numeric, then HEX2OCT reports an invalid argument error (Err:502). - If
**Places**is a non-integer value, then HEX2OCT truncates it to an integer. - If, after any truncation,
**Places**is less than 1 or greater than 10, HEX2OCT reports an invalid argument error (Err:502). - If
**Number**is positive and**Places**is less than the minimum number of characters required to accommodate the octal representation of**Number**, then HEX2OCT reports an invalid argument error (Err:502).

## Additional details:

The following Wikipedia pages provide useful background information that is relevant to this function:

## Examples:

Formula | Description | Returns |
---|---|---|

=HEX2OCT("3F") | Here the function converts the hexadecimal value of 3F (passed as a string) to its octal equivalent of 77. | 77 |

=HEX2OCT(3F) | Here the function returns an invalid name error because Calc does not recognize 3F as a number. | #NAME? |

=HEX2OCT(15) | Here the function converts the hexadecimal value of 15 (passed as a number) to its octal equivalent of 25. | 25 |

=HEX2OCT("3f"; 4) | Here the function again converts the hexadecimal value of 3F (passed as a string) to its octal equivalent of 77 but also adds two leading zeroes. | 0077 |

=HEX2OCT(D1; D2) where cells D1 and D2 contain 3F (text) and 6 (number) respectively. | Here the function again converts the hexadecimal value of 3F (passed via a cell reference) to its octal equivalent of 77 but also adds four leading zeroes. | 000077 |

=HEX2OCT("FFE0000000") | Here the function converts the minimum allowed 10-character hexadecimal value of FFE0000000 (-2^{29} in decimal) to its octal equivalent of 4000000000. |
4000000000 |

=HEX2OCT("FFFFFFFFFF") | Here the function converts the 10-character hexadecimal value of FFFFFFFFFF (-1 in decimal) to its octal equivalent of 7777777777. | 7777777777 |

=HEX2OCT("1FFFFFFF") | Here the function converts the maximum allowed hexadecimal value of 1FFFFFFF (2^{29}-1 in decimal) to its octal equivalent of 3777777777. |
3777777777 |

## Related LibreOffice functions:

## ODF standard:

## Equivalent Excel functions:

HEX2OCT