code: def parse_bytes(bytes_str):
      
      import utool as ut
      import re
      numstr = ut.named_field('num', r'\d\.?\d*')
      unitstr = ut.named_field('unit', r'[a-zA-Z]+')
      match = re.match(numstr + ' *' + unitstr, bytes_str)
      nUnits = float(match.groupdict()['num'])
      unit = match.groupdict()['unit'].upper()
      nBytes = get_bytes(nUnits, unit)
      return nBytes
docs: uint8_size = ut.parse_bytes('1B')
      image_size = ut.parse_bytes('3.5MB')
      float32_size = ut.parse_bytes('32bit')
      desc_size = 128 * uint8_size
      kpts_size = 6 * float32_size
      chip_size = ut.parse_bytes('400 KB')
      probchip_size = ut.parse_bytes('50 KB')
      nImgs = 80000 # 80,000
      nAnnots = nImgs * 2
      desc_per_img = 3000
      size_stats = {
          'image': nImgs * image_size,
          'chips': nAnnots * chip_size,
          'probchips': nAnnots * probchip_size,
          'desc': nAnnots * desc_size * desc_per_img,
          'kpts': nAnnots * kpts_size * desc_per_img,
      }
      print(ut.repr3(ut.map_dict_vals(ut.byte_str2, size_stats), align=True))
      print('total = ' + ut.byte_str2(sum(size_stats.values())))