Цель этого проекта — предоставить маленькую библиотеку, которая упростила бы обычные операции с размерами в байтах. Многие проекты должны работать с размерами в байтах (будь то размеры дискового пространства, памяти и т. д.), и все они должны решать одни и те же проблемы, такие как:
Как получить удобочитаемую строку для заданного размера?
Как сохранить заданный размер, чтобы не потерять важную информацию?
Если мы сохраним размер в байтах, что, если данный размер превысит значение MAXUINT64?
Как интерпретировать размеры, введенные пользователями, в соответствии с их локалью и правилами набора текста?
Как справиться с неоднозначностью десятичных/двоичных единиц (МБ против МиБ)?
В некоторых проектах все вышеперечисленные вопросы/проблемы решены хорошо, в некоторых они решены частично, некоторым просто все равно. Однако иметь (частичные) решения, реализованные в нескольких местах каждый раз с другим набором ошибок, различиями в поведении и тем или иным отсутствием, — это пустая трата времени и усилий. Нам нужно общеупотребительное решение, которое можно было бы использовать в каждом проекте, где необходимо иметь дело с размерами в байтах.
Поскольку цель состоит в том, чтобы предоставить решение, максимально пригодное для общего использования, реализация должна быть небольшой, быстрой и написанной на языке, который можно легко интегрировать с другими языками. В настоящее время очевидным выбором является язык C с тонкими привязками для других языков.
bscalc [-h] [--version] [-u {B,KiB,MiB,GiB,TiB,PiB,EiB,KB,MB,GB,TB,PB,EB}] [-b] [-k] [-m] [-g] [-t] [-p] [-e] [--KB] [--MB] [--GB] [--TB] [--PB] [--EB] [-H] EXPRESSION_PART [EXPRESSION_PART ...]
bscalc [OPTIONS] EXPRESSION_PART [EXPRESSION_PART ...]
Где EXPRESSION_PART — позиционные аргументы.
показать это справочное сообщение и выйти
показать номер версии программы и выйти
Единица для отображения результата в
Показать результат в байтах
Показать результат в КиБ
Показать результат в МиБ
Показать результат в ГиБ
Показать результат в ТиБ
Показать результат в PiB
Показать результат в EiB
Показать результат в КБ
Показать результат в МБ
Показать результат в ГБ
Показать результат в ТБ
Показать результат в PB
Показать результат в EB
Показать только один «лучший» результат
Сообщайте о проблемах на странице https://github.com/storaged-project/libbytesize/issues.
1. Преобразование 1000000000000 байт в более высокие единицы:
bscalc 1000000000000
Выход:
1000000000000 B 976562500.00 KiB 953674.32 MiB 931.32 GiB 0.91 TiB
2. Преобразуйте 1000000000000 байт в наиболее подходящую единицу измерения:
bscalc -H 1000000000000
Выход:
931.32 GiB