2017-01-15 2 views
0

Мое значение немного отключено, возможно, кто-то посмотрит, как я его конвертирую, вижу, что что-то не так. Я вводил 64 МБ в байты, а затем преобразовывал байты в КБ с помощью FileSizeConvert, m не совсем уверен, правильно ли кто-то может посмотреть и посмотреть, должны ли быть какие-либо изменения для 64mb, должно быть 64000KB, а мой выход - 65536 КБ.от преобразования байтов в новый тип

public static function convertToBytes($from){ 
    $number = substr($from, 0, -2); 

    switch(strtoupper(substr($from,-2))){ 
     case "KB": 
      return $number*1024; 
     case "MB": 
      return $number*pow(1024,2); 
     case "GB": 
      return $number*pow(1024,3); 
     case "TB": 
      return $number*pow(1024,4); 
     case "PB": 
      return $number*pow(1024,5); 
     default: 
      return $from; 
    } 
} 

public static function FileSizeConvert($bytes, $type) 
{ 

    $types = ['TB', 'GB', 'MB', 'KB', 'B'];  
    $index = array_search($type, array_values($types)); 

    $bytes = floatval($bytes); 
     $arBytes = array(
      0 => array(
       "UNIT" => "TB", 
       "VALUE" => pow(1024, 4) 
      ), 
      1 => array(
       "UNIT" => "GB", 
       "VALUE" => pow(1024, 3) 
      ), 
      2 => array(
       "UNIT" => "MB", 
       "VALUE" => pow(1024, 2) 
      ), 
      3 => array(
       "UNIT" => "KB", 
       "VALUE" => 1024 
      ), 
      4 => array(
       "UNIT" => "B", 
       "VALUE" => 1 
      ), 
     ); 

    $result = $bytes/$arBytes[$index]["VALUE"]; 
    $result = str_replace(".", "," , strval(round($result, 2)))." ".$arBytes[$index]["UNIT"]; 
    return $result;  
} 

использование:

$max_file_size = Helper::convertToBytes(ini_get('upload_max_filesize') . 'B'); // value is 64MB 
$kb = Helper::FileSizeConvert($max_file_size, 'KB'); // ouput 65536 KB 
+1

Помните, что уровень 2. 2^10 = 1024. Один MB равен 1024 kb – newGuy

+0

Вы говорите, что правильное уравнение – ONYX

+0

Я говорю, что результат правильный. Вы сказали, что выход должен быть 64000, но это неверно – newGuy

ответ

0

65536/1024 = 64. Вы должны помнить, что мыслить по силам 2 не основаны 10

Смежные вопросы