Existe uma maneira fácil no PHP para converter de seqüências de caracteres como '256M', '180K', '4G' para seus equivalentes inteiros?

Eu preciso testar o valor retornado porini_get('memory_limit') e aumentar o limite de memória se estiver abaixo de um determinado limite,ini_get('memory_limit') call retorna valores de string como '128M' ao invés de inteiros.

Eu sei que posso escrever uma função para analisar essas cadeias de caracteres (considerando maiúsculas e minúsculas 'B's) como as escrevi várias vezes:

function int_from_bytestring ($byteString) {
  preg_match('/^\s*([0-9.]+)\s*([KMGTPE])B?\s*$/i', $byteString, $matches);
  $num = (float)$matches[1];
  switch (strtoupper($matches[2])) {
    case 'E':
      $num = $num * 1024;
    case 'P':
      $num = $num * 1024;
    case 'T':
      $num = $num * 1024;
    case 'G':
      $num = $num * 1024;
    case 'M':
      $num = $num * 1024;
    case 'K':
      $num = $num * 1024;
  }

  return intval($num);
}

No entanto, isso fica tedioso e isso parece uma daquelas coisas aleatórias que já existiriam no PHP, embora eu nunca tenha encontrado. Alguém sabe de alguma maneira interna para analisar essas seqüências de quantidade de bytes?