code: def ingest_memory(self, memory):
          
          def lshift(num, shift):
              return num << shift
  
          def k(num, thousands):
              return num * thousands
  
          # if isinstance(memory, int):
          #     # Memory was specified as an integer, meaning it is in bytes
          memory = str(memory)
  
          bit_shift = {
              'E': {'func': k, 'shift': 10e17},
              'P': {'func': k, 'shift': 10e14},
              'T': {'func': k, 'shift': 10e11},
              'G': {'func': k, 'shift': 10e8},
              'M': {'func': k, 'shift': 10e5},
              'K': {'func': k, 'shift': 10e2},
              'Ei': {'func': lshift, 'shift': 60},
              'Pi': {'func': lshift, 'shift': 50},
              'Ti': {'func': lshift, 'shift': 40},
              'Gi': {'func': lshift, 'shift': 30},
              'Mi': {'func': lshift, 'shift': 20},
              'Ki': {'func': lshift, 'shift': 10},
          }
  
          if len(memory) > 2 and memory[-2:] in bit_shift.keys():
              unit = memory[-2:]
              number = int(memory[:-2])
              memory = bit_shift[unit]['func'](number, bit_shift[unit]['shift'])
          elif len(memory) > 1 and memory[-1:] in bit_shift.keys():
              unit = memory[-1]
              number = int(memory[:-1])
              memory = bit_shift[unit]['func'](number, bit_shift[unit]['shift'])
          # Cast to a float to properly consume scientific notation
          return int(float(memory))
docs: Transform the memory into bytes
  
          :param memory: Compose memory definition. (1g, 24k)
          :type memory: memory string or integer
          :return: The memory in bytes
          :rtype: int