Unpack C struct with Python transferred via I2C

The setup is as such: An Arduino (Mega2560) receiving GPS and telemetry data, which is connected to a Raspberry Pi via I2C (Pi = Master). I got some code from Github which accurately transmits and unpacks floating point with no issues. However, I am not sending a homogeneous byte stream. The C struct I created is: (Float, Float, Int, Int, Int, Char, Char). Here is a bit of my code:


  // callback for sending data
void sendData(){

struct transferData data;

data.latitude = GPS.latitude;
data.longitude = GPS.longitude;
data.hour = GPS.hour;
data.minute = GPS.minute;
data.second = GPS.seconds;
data.lat = GPS.lat;
data.lon = GPS.lon;

uint8_t *ptr = (uint8_t *)&data;



Where the functions are:

def get_data():
  return bus.read_i2c_block_data(address,0);

def get_float(data,index):
  bytes = data[4*index:(index+1)*4]
  return struct.unpack('f', "".join(map(chr, bytes)))[0]
def get_char(data,index):
  bytes = data[(index)*4]
  return struct.unpack('c', "".join(map(chr, bytes)))[0]

My python code won't run through get_char() function.

I also tried:

buff = bus.read_i2c_block_data(address, 0)
buff = struct.unpack('f f i i i c c', buff)
print buff

But that didn't work either. Does anyone have some guidance for me?