# Turning Integers and words

This article was originally posted to delphi3000.com

Sometimes it is nessescary to turn the bytes of an integer. This is known as the big-endian/little-endian problem, and occurs when you receive data from a machine with another byte order:

Some machines arranges bytes from left to right.

Other arranges them from right to left.

Delphi has implemented a function called swap() that can turn integers. But here are some examples on how to do it yourself.

// Turning a smallint (16 bit signed)

function i16( i : smallint ) : smallint;

var

x1 : smallint;

x2 : array[0..1] of byte absolute x1;

x3 : array[0..1] of byte absolute i;

begin

x2 := x3;

x2 := x3;

result := x1;

end;

// Turning a word (16 bit unsigned)

function r16( i : word) : word;

var

x1 : word;

x2 : array[0..1] of byte absolute x1;

x3 : array[0..1] of byte absolute i;

begin

x2 := x3;

x2 := x3;

result := x1;

end;

// Turning a longint (32 bit signed)

function r32( i : longint) : longint;

var

x1 : longint;

x2 : array[1..4] of byte absolute x1;

x3 : array[1..4] of byte absolute i;

begin

x2 := x3;

x2 := x3;

x2 := x3;

x2 := x3;

result := x1;

end;

Do you see the pattern?