Convert long to char array and back
I suggest using a union:
union {
char myByte[4];
long mylong;
} foo;
Char to Long:
Then you can just add the bytes:
foo myUnion;
myUnion.myByte[0] = buf[0];
myUnion.myByte[1] = buf[1];
myUnion.myByte[2] = buf[2];
myUnion.myByte[3] = buf[3];
Then you can access the long as:
myUnion.myLong;
Long to Char:
The same if you want to go the other way from long to char array:
foo myUnion
myUnion.myLong = 1234L;
To access bytes:
myUnion.myByte[0];
myUnion.myByte[1];
myUnion.myByte[2];
myUnion.myByte[3];