Just for future reference, here is the c code for packing the GPS data into 48 bits.
uint8_t coords[6]; // 6*8 bits = 48
int32_t lat = float_latitude * 10000;
int32_t lon = float_longitude * 10000;
// Pad 2 int32_t to 6 8uint_t, skipping the last byte (x >> 24)
coords[0] = lat;
coords[1] = lat >> 8;
coords[2] = lat >> 16;
coords[3] = lon;
coords[4] = lon >> 8;
coords[5] = lon >> 16;
LMIC_setTxData2(1, coords, sizeof(coords), 0);
And here is some example PHP-code to decode it back into floats:
// Unpack into 6 bytes
$data = unpack('C*', $payload);
// Combine each 3 bytes into a 24bit int
$lat = ($data[1] + ($data[2] << 8) + ($data[3] << 16)) / 10000;
$lon = ($data[4] + ($data[5] << 8) + ($data[6] << 16)) / 10000;
var_dump( $lat, $lon );