2 Chars to Short in C

Name McChange picture Name McChange · Jul 21, 2013 · Viewed 10.9k times · Source

I've got 2 chars.

Char 128 and Char 2.

How do I turn these chars into the Short 640 in C?

I've tried

unsigned short getShort(unsigned char* array, int offset)
{
    short returnVal;
    char* a = slice(array, offset, offset+2);
    memcpy(&returnVal, a, 2);
    free(a);
    return returnVal;
}

But that didn't work, it just displays it as 128. What's the preferred method?

Answer

qaphla picture qaphla · Jul 21, 2013

Probably the easiest way to turn two chars, a and b, into a short c, is as follows:

short c = (((short)a) << 8) | b;

To fit this into what you have, the easiest way is probably something like this:

unsigned short getShort(unsigned char* array, int offset)
{
    return (short)(((short)array[offset]) << 8) | array[offset + 1];
}