Takes the binary data stored in the binary string provided and extracts the 
    data for each channel that was saved, along with the sample rate and length
    of the data array.

    Parameters
    ----------
    fileContent : bytes 
        bytes object containing the data from a .bin file exported from
        the saleae data logger.
    
    Returns
    -------
    ChannelData : list
        List containing a list which contains the data from each channel
    LenOf1Channel : int
        The length of the data in each channel
    NumOfChannels : int
        The number of channels saved
    SampleTime : float
        The time between samples (in seconds)
    SampleRate : float
        The sample rate (in Hz)

def read_data_from_bytes(fileContent):
    """
    Takes the binary data stored in the binary string provided and extracts the 
    data for each channel that was saved, along with the sample rate and length
    of the data array.

    Parameters
    ----------
    fileContent : bytes 
        bytes object containing the data from a .bin file exported from
        the saleae data logger.
    
    Returns
    -------
    ChannelData : list
        List containing a list which contains the data from each channel
    LenOf1Channel : int
        The length of the data in each channel
    NumOfChannels : int
        The number of channels saved
    SampleTime : float
        The time between samples (in seconds)
    SampleRate : float
        The sample rate (in Hz)
    """
    TotalDataLen = struct.unpack('Q', fileContent[:8])[0] # Unsigned long long 
    NumOfChannels = struct.unpack('I', fileContent[8:12])[0] # unsigned Long
    SampleTime = struct.unpack('d', fileContent[12:20])[0]

    AllChannelData = struct.unpack("f" * ((len(fileContent) -20) // 4), fileContent[20:])
    #  ignore the heading bytes (= 20)
    # The remaining part forms the body, to know the number of bytes in the body do an integer division by 4 (since 4 bytes = 32 bits = sizeof(float)

    LenOf1Channel = int(TotalDataLen/NumOfChannels)

    ChannelData = list(get_chunks(AllChannelData, LenOf1Channel))
    
    return ChannelData, LenOf1Channel, NumOfChannels, SampleTime