View Source ExDicom.Parser.BigEndianParser (EX_DICOM v0.2.0)

Provides functions for parsing different numeric types from a big-endian binary. All functions handle bounds checking and proper binary validation.

Summary

Types

A binary string containing bytes to parse

Position in the binary to start parsing from

Functions

Parses a 64-bit float from a big-endian binary.

Parses a 32-bit float from a big-endian binary.

Parses a signed 16-bit integer from a big-endian binary.

Parses a signed 32-bit integer from a big-endian binary.

Parses an unsigned 16-bit integer from a big-endian binary.

Parses an unsigned 32-bit integer from a big-endian binary.

Types

byte_array()

@type byte_array() :: binary()

A binary string containing bytes to parse

position()

@type position() :: non_neg_integer()

Position in the binary to start parsing from

Functions

read_double(byte_array, position)

@spec read_double(byte_array(), position()) :: {:ok, float()} | {:error, String.t()}

Parses a 64-bit float from a big-endian binary.

Parameters

  • byte_array - The binary to parse from
  • position - The position to start parsing from

Returns

  • {:ok, float} - The parsed 64-bit float
  • {:error, String.t()} - Error message if parsing fails

Examples

iex> BigEndianParser.read_double(<<0x40, 0x09, 0x21, 0xFB, 0x54, 0x44, 0x2D, 0x18>>, 0)
{:ok, 3.14159}

read_float(byte_array, position)

@spec read_float(byte_array(), position()) :: {:ok, float()} | {:error, String.t()}

Parses a 32-bit float from a big-endian binary.

Parameters

  • byte_array - The binary to parse from
  • position - The position to start parsing from

Returns

  • {:ok, float} - The parsed 32-bit float
  • {:error, String.t()} - Error message if parsing fails

Examples

iex> BigEndianParser.read_float(<<0x40, 0x48, 0xF5, 0xC3>>, 0)
{:ok, 3.14}

read_int16(byte_array, position)

@spec read_int16(byte_array(), position()) :: {:ok, integer()} | {:error, String.t()}

Parses a signed 16-bit integer from a big-endian binary.

Parameters

  • byte_array - The binary to parse from
  • position - The position to start parsing from

Returns

  • {:ok, integer} - The parsed signed 16-bit integer
  • {:error, String.t()} - Error message if parsing fails

Examples

iex> BigEndianParser.read_int16(<<0xFF, 0xFE, 0x56>>, 0)
{:ok, -2}

read_int32(byte_array, position)

@spec read_int32(byte_array(), position()) :: {:ok, integer()} | {:error, String.t()}

Parses a signed 32-bit integer from a big-endian binary.

Parameters

  • byte_array - The binary to parse from
  • position - The position to start parsing from

Returns

  • {:ok, integer} - The parsed signed 32-bit integer
  • {:error, String.t()} - Error message if parsing fails

Examples

iex> BigEndianParser.read_int32(<<0xFF, 0xFF, 0xFF, 0xFE>>, 0)
{:ok, -2}

read_uint16(byte_array, position)

@spec read_uint16(byte_array(), position()) :: {:ok, char()} | {:error, String.t()}

Parses an unsigned 16-bit integer from a big-endian binary.

Parameters

  • byte_array - The binary to parse from
  • position - The position to start parsing from

Returns

  • {:ok, integer} - The parsed unsigned 16-bit integer
  • {:error, String.t()} - Error message if parsing fails

Examples

iex> BigEndianParser.read_uint16(<<0x12, 0x34, 0x56>>, 0)
{:ok, 0x1234}

read_uint32(byte_array, position)

@spec read_uint32(byte_array(), position()) ::
  {:ok, non_neg_integer()} | {:error, String.t()}

Parses an unsigned 32-bit integer from a big-endian binary.

Parameters

  • byte_array - The binary to parse from
  • position - The position to start parsing from

Returns

  • {:ok, integer} - The parsed unsigned 32-bit integer
  • {:error, String.t()} - Error message if parsing fails

Examples

iex> BigEndianParser.read_uint32(<<0x12, 0x34, 0x56, 0x78>>, 0)
{:ok, 0x12345678}