Я не очень разбираюсь в этих вещах, поэтому, пожалуйста, постарайтесь не делать выводы прямо из ворот. Хорошо, поэтому у меня есть число в байтах, которое я пытался преобразовать в mb с небольшой согласованностью или успехом. Пример - это каталог, который у меня есть, который возвращается в 191,919,191 байт (191,919 МБ), когда я получаю информацию.
Мне было любопытно, как его преобразовать, поэтому вот что я узнал:
Google:
1 KB = 1000 B
1 МБ = 1000 КБ
1 ГБ = 1000 МБ
Все идет нормально...
1024000 B в KB = 1024
1024 КБ в MB = 1.024
Это кажется совершенно логичным...
191,919,191 B до МБ = 191,919 МБ
Это тоже выглядит правильно, но когда я перехожу, чтобы преобразовать свои байты в mb, используя, в основном, любой пример кода, который существует там, я в конечном итоге что-то сильно отличается от дружественного ol google.
SYNOPSIS:
Converting between bytes, kilobytes, megabytes, and gigabytes.
SOLUTION:
1 byte = 1 character
1 kilobyte (kb) = 1024 bytes
1 megabyte (Mb) = 1024 kb = 1,048,576 bytes
1 gigabyte (Gb) = 1024 Mb = 1,048,576 kb = 1,073,741,824 bytes
Итак, с этой информацией:
191.919 mb / (1024000) = 187.421 B
Я также видел такие преобразования:
191.919 mb / (1024 * 1024) = 183.028 B
WTF? этот материал просто составлен по мере продвижения или существует стандартный способ получения реального размера файла в mb из байтов? Из-за этой противоречивой информации я полностью потерялся и запутался. У меня нет реального представления о том, кто прав или не прав, или если я просто что-то не хватает.
У меня такой код:
UInt32 fileSize = 191919191; // size in bytes
UInt32 mbSize = fileSize / 1024000; // do conversion
printf(@"%u MB",(unsigned int)mbSize); // result:
Какие результаты:
187 MB
Итак, как в мире может быть 191,919,191 байт = 191 МБ?
Просто подвести итоги...
Суть в том, что всякий раз, когда это имеет значение, вы должны проявлять особую осторожность, чтобы знать, что вы используете. Некоторая документация не будет заботиться об этом и может ввести в заблуждение. Я не вижу, чтобы эта неоднозначность менялась в ближайшее время.