MySQL for the Internet of Things

(Steven Felgate) #1
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);
    }
    }

Free download pdf