org.apache.mina.codec.delimited.ints

## Class RawInt32

- java.lang.Object
- - org.apache.mina.codec.delimited.ints.RawInt32

All Implemented Interfaces:
  IntTranscoder

    public final class RawInt32
    extends Object
    implements IntTranscoder

Class providing raw/canonical representation of integers.

## RawInt32 encoder and decoder

This pair provides a mechanism called canonical form serialization. In this representations all 32-bits integer are encoded over 4 bytes. This library provides two variants big-endian and small-endian. In both cases, the inner bits of each byte are ordered from the most to the least significant bit. The difference between the two variants is the ordering of the four bytes.

- Big-endian: The bytes are ordered from the most to the least significant one
- Little-endian: The bytes are ordered from the least to the most significant one

This representation is often used since it is used internally in CPUs, therefore programmers using a low level languages (assembly, C, ...) appreciate using it (for ease of use or performance reasons). When integers are directly copied from memory, it is required to ensure this serializer uses the appropriate endianness on both ends.

- Big-endian: 68k, MIPS, Alpha, SPARC
- Little-endian: x86, x86-64, ARM
- Bi-endian (depends of the operating system): PowerPC, Itanium

More details availabile on the Wikipedia "Endianness page".

## On-wire representation

Encoding of the value 67305985

Big-Endian variant: 0000 0100 0000 0011 0000 0010 0000 0001 ‾‾‾‾↓‾‾‾‾ ‾‾‾‾↓‾‾‾‾ ‾‾‾‾↓‾‾‾‾ ‾‾‾‾↓‾‾‾‾ 4 3 2 1 // 4·224 + 3·216 + 2·28 + 1·20 = 67305985 Little-Endian variant: 0000 0001 0000 0010 0000 0011 0000 0100 ‾‾‾‾↓‾‾‾‾ ‾‾‾‾↓‾‾‾‾ ‾‾‾‾↓‾‾‾‾ ‾‾‾‾↓‾‾‾‾ 1 2 3 4 // 1·20 + 2·28 + 3·216 + 4·224 = 67305985

n.b. This class doesn't have any dependency against Apache Thrift or any other library in order to provide this convenient integer serialization module to any software using FramedMINA.

Author:
  Apache MINA Project

### Constructor Summary

Constructors
Constructor and Description
`RawInt32(ByteOrder bo)`

### Method Summary

Methods
`IoBufferDecoder<Integer>` `getDecoder()`
`ByteBufferEncoder<Integer>` `getEncoder()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### RawInt32

    public RawInt32(ByteOrder bo)

### Method Detail

#### getDecoder

    public IoBufferDecoder<Integer> getDecoder()

Specified by:
  `getDecoder` in interface `IntTranscoder`

#### getEncoder

    public ByteBufferEncoder<Integer> getEncoder()

Specified by:
  `getEncoder` in interface `IntTranscoder`