Chapter 4 ■ Data transformation
*
- Returns integer - integer from the buffer
/
int read_int(byte buffer[], int offset, int size) {
int value = 0;
int new_size = 0;
if (size == 0)
new_size = get_lcb_len(offset);
if (size == 1)
return buffer[offset];
new_size = size;
int shifter = (new_size - 1) 8;
for (int i = new_size; i > 0; i--) {
value += (byte)(buffer[i-1] << shifter);
shifter -= 8;
}
return value;
}
/**
- store_int - Store an integer value into a byte array of size bytes.
- This writes an integer into the buffer at the current position of the
- buffer. It will transform an integer of size to a length coded binary
- form where 1-3 bytes are used to store the value (set by size).
- buff[in] pointer to location in internal buffer where the
- integer will be stored
- value[in] integer value to be stored
- size[in] number of bytes to use to store the integer
/
void store_int(byte buff, long value, int size) {
memset(buff, 0, size);
if (value < 0xff)
buff[0] = (byte)value;
else if (value < 0xffff) {
buff[0] = (byte)value;
buff[1] = (byte)(value >> 8);
} else if (value < 0xffffff) {
buff[0] = (byte)value;
buff[1] = (byte)(value >> 8);
buff[2] = (byte)(value >> 16);
} else if (value < 0xffffff) {
buff[0] = (byte)value;
buff[1] = (byte)(value >> 8);
buff[2] = (byte)(value >> 16);
buff[3] = (byte)(value >> 24);
}
}