Skip to main content
`Ctrl`+`K`

# PetscBinaryRead

Reads from a binary file.

## Synopsis

    PetscErrorCode PetscBinaryRead(int fd, void *data, PetscCount num, PetscInt *count, PetscDataType type)

Not Collective

## Input Parameters

- fd - the file descriptor

- num - the maximum number of items to read

- type - the type of items to read (`PETSC_INT`, `PETSC_REAL`, `PETSC_SCALAR`, etc.)

## Output Parameters

- data - the buffer, this is an array of the type that matches the value in `type`

- count - the number of items read, optional

## Notes

If `count` is not provided and the number of items read is less than the maximum number of items to read, then this routine errors.

`PetscBinaryRead()` uses byte swapping to work on all machines; the files are written ALWAYS using big-endian ordering. On little-endian machines the numbers are converted to the little-endian format when they are read in from the file. When PETSc is ./configure with `--with-64-bit-indices` the integers are written to the file as 64-bit integers, this means they can only be read back in when the option `--with-64-bit-indices` is used.

## Fortran Note

There are different functions for each datatype, for example `PetscBinaryReadInt()`

## See Also

`PetscBinaryWrite()`, `PetscBinaryOpen()`, `PetscBinaryClose()`, `PetscViewerBinaryGetDescriptor()`, `PetscBinarySynchronizedWrite()`, `PetscBinarySynchronizedRead()`, `PetscBinarySynchronizedSeek()`

## Level

developer

## Location

src/sys/fileio/sysio.c

## Examples

src/vec/vec/tutorials/ex6f.F90
src/dm/tutorials/ex15.c
src/vec/vec/tutorials/ex6.c

Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages