Слово абсолютно точно можно хранить в файле с размером байтов, кавычки при расчетах не учитываются

Обновлено: 04.07.2024

Программа Python читается парсером. На вход синтаксического анализатора поступает поток токенов, сгенерированный лексическим анализатором. В этой главе описывается, как лексический анализатор разбивает файл на лексемы.

Python читает текст программы как кодовые точки Unicode; кодировка исходного файла может быть задана объявлением кодировки и по умолчанию UTF-8, подробности см. в PEP 3120. Если исходный файл не может быть декодирован, возникает ошибка SyntaxError.

2.1. Структура строки¶

Программа Python делится на несколько логических строк.

2.1.1. Логические линии¶

Конец логической строки представлен токеном NEWLINE. Операторы не могут пересекать границы логических строк, за исключением случаев, когда NEWLINE разрешен синтаксисом (например, между операторами в составных операторах). Логическая линия создается из одной или нескольких физических линий в соответствии с явными или неявными правилами соединения строк.

2.1.2. Физические линии¶

Физическая строка — это последовательность символов, заканчивающаяся последовательностью конца строки. В исходных файлах и строках может использоваться любая из стандартных последовательностей завершения строки платформы — форма Unix с использованием ASCII LF (перевод строки), форма Windows с использованием последовательности ASCII CR LF (возврат с последующим переводом строки) или старая форма Macintosh с использованием символ ASCII CR (возврат). Все эти формы можно использовать одинаково, независимо от платформы. Конец ввода также служит неявным терминатором для последней физической строки.

При встраивании Python строки исходного кода должны передаваться в API Python с использованием стандартных соглашений C для символов новой строки (символ \n, представляющий ASCII LF, является разделителем строки).

2.1.3. Комментарии¶

2.1.4. Декларации кодирования¶

Если комментарий в первой или второй строке скрипта Python соответствует регулярному выражению coding[=:]\s*([-\w.]+) , этот комментарий обрабатывается как объявление кодировки; первая группа этого выражения называет кодировку файла исходного кода. Объявление кодировки должно появиться на отдельной строке. Если это вторая строка, первая строка также должна быть строкой только для комментариев. Рекомендуемые формы выражения кодирования

который также распознается GNU Emacs, и

который распознается системой VIM Брэма Муленаара.

Если объявление кодировки не найдено, используется кодировка по умолчанию UTF-8. Кроме того, если первые байты файла представляют собой знак порядка байтов UTF-8 ( b'\xef\xbb\xbf' ), объявленная кодировка файла - UTF-8 (это поддерживается, среди прочего, блокнотом Microsoft). ).

Если объявлена ​​кодировка, имя кодировки должно быть распознано Python. Кодировка используется для всего лексического анализа, включая строковые литералы, комментарии и идентификаторы.

2.1.5. Явное соединение строк¶

Две или более физические строки могут быть объединены в логические строки с помощью символов обратной косой черты ( \ ) следующим образом: когда физическая строка заканчивается обратной косой чертой, которая не является частью строкового литерала или комментария, она объединяется со следующим формированием одну логическую строку, удалив обратную косую черту и следующий символ конца строки. Например:

Строка, заканчивающаяся обратной косой чертой, не может содержать комментарий. Обратная косая черта не является продолжением комментария. Обратная косая черта не продолжает токен, за исключением строковых литералов (т. е. токены, отличные от строковых литералов, не могут быть разделены между физическими строками с помощью обратной косой черты). Обратная косая черта недопустима в любом месте строки вне строкового литерала.

2.1.6. Неявное соединение строк¶

Выражения в круглых, квадратных или фигурных скобках можно разделить на несколько физических строк без использования обратной косой черты. Например:

Неявно продолженные строки могут содержать комментарии. Отступ строк продолжения не имеет значения. Допускаются пустые строки продолжения. Между строками неявного продолжения нет токена NEWLINE. Неявно продолженные строки также могут встречаться в строках в тройных кавычках (см. ниже); в этом случае они не могут содержать комментарии.

2.1.7. Пустые строки¶

Логическая строка, содержащая только пробелы, символы табуляции, переводы форм и, возможно, комментарий, игнорируется (т. е. токен NEWLINE не создается). Во время интерактивного ввода операторов обработка пустой строки может отличаться в зависимости от реализации цикла чтения-оценки-печати. В стандартном интерактивном интерпретаторе полностью пустая логическая строка (т. е. не содержащая даже пробела или комментария) завершает многострочный оператор.

2.1.8. Отступ¶

Ведущие пробелы (пробелы и табуляции) в начале логической строки используются для вычисления уровня отступа строки, который, в свою очередь, используется для определения группировки операторов.

Табуляции заменяются (слева направо) от одного до восьми пробелов, так что общее количество символов до замены включительно кратно восьми (предполагается, что это то же правило, что и в Unix). Общее количество пробелов, предшествующих первому непустому символу, определяет отступ строки. Отступ нельзя разделить на несколько физических строк с помощью обратной косой черты; пробел до первой обратной косой черты определяет отступ.

Отступ отклоняется как несовместимый, если в исходном файле табуляция и пробелы смешиваются таким образом, что значение зависит от значения табуляции в пробелах; в этом случае возникает TabError.

Примечание о межплатформенной совместимости: из-за природы текстовых редакторов на платформах, отличных от UNIX, неразумно использовать сочетание пробелов и табуляции для отступов в одном исходном файле. Следует также отметить, что разные платформы могут явно ограничивать максимальный уровень отступа.

В начале строки может присутствовать символ перевода строки; он будет проигнорирован для расчетов отступов выше. Символы перевода страницы, встречающиеся где-либо в начальном пробеле, имеют неопределенный эффект (например, они могут сбросить счетчик пробелов до нуля).

Уровни отступа последовательных строк используются для создания токенов INDENT и DEDENT с использованием стека следующим образом.

Перед чтением первой строки файла в стек помещается один ноль; это никогда не выскочит снова. Числа, помещаемые в стек, всегда будут строго возрастать снизу вверх. В начале каждой логической строки уровень отступа строки сравнивается с вершиной стека. Если они равны, ничего не происходит. Если он больше, он помещается в стек и генерируется один токен INDENT. Если оно меньше, оно должно быть одним из чисел, встречающихся в стеке; все числа в стеке, которые больше, извлекаются, и для каждого числа, извлеченного из стека, генерируется токен DEDENT. В конце файла токен DEDENT создается для каждого оставшегося в стеке числа, которое больше нуля.

Вот пример правильного (хотя и сбивающего с толку) фрагмента кода Python с отступом:

В следующем примере показаны различные ошибки отступов:

(На самом деле синтаксический анализатор обнаруживает первые три ошибки; лексический анализатор находит только последнюю ошибку — отступ return r не соответствует уровню, извлеченному из стека.)

2.1.9. Пробелы между токенами¶

За исключением начала логической строки или строковых литералов, пробелы, табуляция и перевод страницы могут использоваться взаимозаменяемо для разделения токенов. Пробел необходим между двумя токенами только в том случае, если их конкатенация может иначе интерпретироваться как другой токен (например, ab — это один токен, а b — это два токена).

2.2. Другие токены¶

Кроме NEWLINE, INDENT и DEDENT, существуют следующие категории токенов: идентификаторы, ключевые слова, литералы, операторы и разделители. Пробельные символы (кроме разделителей строк, обсуждавшихся ранее) не являются токенами, а служат для разграничения токенов. Там, где существует двусмысленность, маркер представляет собой максимально длинную строку, которая образует допустимый маркер при чтении слева направо.

2.3. Идентификаторы и ключевые слова¶

Идентификаторы (также называемые именами) описываются следующими лексическими определениями.

Синтаксис идентификаторов в Python основан на стандартном приложении Unicode UAX-31 с уточнениями и изменениями, как указано ниже; см. также PEP 3131 для получения дополнительной информации.

В пределах диапазона ASCII (U+0001..U+007F) допустимые символы для идентификаторов такие же, как и в Python 2.x: прописные и строчные буквы от A до Z , символ подчеркивания _ и, за исключением первый символ, цифры от 0 до 9 .

Python 3.0 вводит дополнительные символы вне диапазона ASCII (см. PEP 3131). Для этих символов в классификации используется версия базы данных символов Unicode, включенная в модуль unicodedata.

Идентификаторы не ограничены по длине. Регистр имеет значение.

Упомянутые выше коды категорий Unicode означают:

Лу – прописные буквы

Ll – строчные буквы

Lt – заглавные буквы

Lm — буквы-модификаторы

Ло – другие буквы

Nl – цифры букв

Mn — знаки без пробелов

Mc – комбинированные знаки интервала

Nd – десятичные числа

ПК – знаки препинания на соединителях

Other_ID_Start — явный список символов в PropList.txt для поддержки обратной совместимости

При синтаксическом анализе все идентификаторы преобразуются в нормальную форму NFKC; сравнение идентификаторов основано на NFKC.

2.3.1. Ключевые слова¶

2.3.2. Мягкие ключевые слова¶

Новое в версии 3.10.

Некоторые идентификаторы зарезервированы только в определенных контекстах. Они известны как мягкие ключевые слова. Идентификаторы match , case и _ могут синтаксически действовать как ключевые слова в контекстах, связанных с оператором сопоставления с образцом, но это различие делается на уровне синтаксического анализатора, а не при токенизации.

В качестве мягких ключевых слов их использование с сопоставлением шаблонов возможно при сохранении совместимости с существующим кодом, который использует match , case и _ в качестве имен идентификаторов.

2.3.3. Зарезервированные классы идентификаторов¶

Некоторые классы идентификаторов (помимо ключевых слов) имеют особое значение. Эти классы идентифицируются шаблонами начальных и конечных символов подчеркивания:

Не импортируется из импорта модуля * .

В шаблоне case в операторе match _ – это мягкое ключевое слово, обозначающее подстановочный знак .

Отдельно интерактивный интерпретатор делает результат последней оценки доступным в переменной _ . (Он хранится во встроенном модуле вместе со встроенными функциями, такими как print .)

В других местах _ – это обычный идентификатор. Он часто используется для обозначения «специальных» элементов, но не для самого Python.

Имя _ часто используется в сочетании с интернационализацией; обратитесь к документации по модулю gettext для получения дополнительной информации об этом соглашении.

Он также обычно используется для неиспользуемых переменных.

Определяемые системой имена, неофициально называемые "dunder" именами. Эти имена определяются интерпретатором и его реализацией (включая стандартную библиотеку). Текущие имена систем обсуждаются в разделе «Имена специальных методов» и в других местах. Скорее всего, в будущих версиях Python будет определено больше. Любое использование имен __*__ в любом контексте, не соответствующее явно задокументированному использованию, подлежит нарушению без предупреждения.

Частные имена класса. Имена в этой категории, когда они используются в контексте определения класса, переписываются, чтобы использовать искаженную форму, чтобы избежать конфликтов имен между «личными» атрибутами базового и производного классов. См. раздел Идентификаторы (имена) .

2.4. Литералы¶

Литералы — это записи для постоянных значений некоторых встроенных типов.

2.4.1. Строковые и байтовые литералы¶

Строковые литералы описываются следующими лексическими определениями:

Одно синтаксическое ограничение, не указанное в этих постановках, заключается в том, что пробелы между строковым префиксом или префиксом байтов и остальной частью литерала не допускаются. Исходный набор символов определяется объявлением кодировки; это UTF-8, если в исходном файле не указано объявление кодировки; см. раздел Объявления кодирования .

На простом английском языке: оба типа литералов могут быть заключены в соответствующие одинарные кавычки ( ' ) или двойные кавычки ( " ). Они также могут быть заключены в соответствующие группы из трех одинарных или двойных кавычек (они обычно называются < em>строки в тройных кавычках). Обратная косая черта ( \ ) используется для экранирования символов, которые в противном случае имеют особое значение, таких как перевод строки, обратная косая черта или символ кавычек.

Байтовые литералы всегда имеют префикс 'b' или 'B'; они создают экземпляр типа bytes вместо типа str. Они могут содержать только символы ASCII; байты с числовым значением 128 или больше должны быть выражены с помощью escape-последовательности.

Как строковые, так и байтовые литералы могут иметь префикс с буквой 'r' или 'R'; такие строки называются необработанными строками и обрабатывают обратную косую черту как обычные символы. В результате в строковых литералах escape-символы '\U' и '\u' в необработанных строках не обрабатываются особым образом. Учитывая, что необработанные литералы Unicode в Python 2.x ведут себя иначе, чем в Python 3.x, синтаксис ur не поддерживается.

Новое в версии 3.3: префикс 'rb' необработанных байтовых литералов был добавлен как синоним 'br' .

Новое в версии 3.3: поддержка устаревшего литерала Unicode ( u'value' ) была повторно введена для упрощения обслуживания двух кодовых баз Python 2.x и 3.x. Дополнительную информацию см. в PEP 414.

Строковый литерал с префиксом 'f' или 'F' является форматированным строковым литералом; см. Форматированные строковые литералы. 'f' можно комбинировать с 'r' , но не с 'b' или 'u' , поэтому возможны необработанные форматированные строки, но не форматированные байтовые литералы.

В литералах с тройными кавычками допускаются (и сохраняются) неэкранированные символы новой строки и кавычки, за исключением того, что литерал завершается тремя неэкранированными кавычками подряд. («Кавычка» — это символ, используемый для открытия литерала, то есть либо ', либо " .)

Эта утилита вычисляет размер аудиофайлов (как несжатых, так и аудиофайлов PCM/IEEE FP, таких как .WAV/ .W64/ .RF64, .AIFF/.AIF, а также файлов со сжатием с потерями, таких как MP3, WMA, AAC и OGG Vorbis), в зависимости от продолжительности записи и выбранных вами настроек файла:

**N.B.** Если вы ищете калькулятор для обратного действия (т. е. для расчета продолжительности из доступного места), перейдите сюда.

Введите продолжительность файла в часах, минутах, секундах и миллисекундах. Для расчета размера несжатых файлов также требуется информация о частоте дискретизации, битовой глубине и канале (но не битовая скорость, которая вычисляется автоматически). Помимо продолжительности, для расчета размера сжатых файлов, таких как MP3 и т. д., требуется только информация о скорости передачи (в этом случае информация о частоте дискретизации, разрядности и канале игнорируется). Для сжатых файлов, закодированных с помощью CBR (постоянная скорость передачи данных), отображаемый размер файла должен быть максимально точным (независимо от переменных, таких как информация заголовка и т. д. — см. ниже). Для сжатых файлов, закодированных с помощью VBR (переменная скорость передачи данных), отображаемый размер файла может быть немного менее точным, поскольку в этом случае скорость передачи данных может варьироваться в зависимости от программного материала.

Обратите внимание, что размер файла, сообщаемый вашим устройством, может немного отличаться от показанного из-за методов размещения файлов, возможных различий в количестве информации в заголовке и/или того факта, что некоторые операционные системы рассчитывают место на жестком диске иначе, чем другие (например, , некоторые считают его в двоичном формате и называют 1 КБ 1024 байтами, в то время как другие (и большинство производителей жестких дисков) вычисляют его в десятичном формате и называют 1 КБ 1000 байтами) — этот калькулятор поддерживает оба метода.

Если вы найдете это полезным и/или у вас есть какие-либо комментарии или предложения, дайте мне знать через раздел комментариев ниже (пожалуйста, ознакомьтесь с правилами нашего веб-сайта перед публикацией).

Дайте мне знать, что вы думаете. Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

74 мысли о «Калькуляторе размера аудиофайла»

Очень полезно, спасибо! Я получаю SD-карту для своего Zoom R8, и меня беспокоит, будет ли достаточно скорости записи U1. Выяснилось, что я могу одновременно записывать 64 канала в формате 24 бит/48 кГц, и карта U1 по-прежнему прекрасно с этим справится.

Я потратил время, чтобы выяснить формулы, используемые этим сайтом, чтобы найти размер файла аудио и максимально возможную длину на основе размера диска и скорости передачи данных, что я смог сделать благодаря этому сайту.
Благодаря этому я узнал, как рассчитать максимальный битрейт аудио на основе длины аудио и размера диска. Вот формула, если вам это нужно по какой-то причине:

((размер файла в мегабайтах / длина в секундах) * 1000) * 8

Если бы не этот сайт, я бы не смог его сделать, так как раньше не мог уложить в голове, как это сделать.

Если вам интересно, какой смысл в возможности рассчитать максимально возможный битрейт, это полезно для сжатия аудио до определенного размера файла, обычно для того, чтобы вы могли обойти ограничение размера файла на веб-сайте. Но для меня это полезно, потому что значительно упрощает сжатие аудио до размеров файлов, пригодных для потоковой передачи.

Рад, что вы нашли этот сайт полезным и нашли решение – вы действительно правы. Однако вашу формулу можно упростить для ясности. На самом деле, самые простые формулы для расчета размера файла, продолжительности или битрейта будут такими:

Размер файла (бит) = продолжительность (секунды) * скорость передачи данных (бит в секунду)

Продолжительность (секунды) = размер файла (биты) / скорость передачи данных (биты в секунду)

Битрейт (бит в секунду) = размер файла (бит) / продолжительность (секунды)

Это именно то, что мне было нужно. Я рассматриваю возможность реализации звукового сэмплера на плате микроконтроллера, и мне нужно знать, какая емкость мне понадобится. Это был идеальный инструмент для этого. Спасибо!

Очень полезно! Спасибо

Это то, что я искал. Спасибо.

Отличный инструмент! Спасибо за его создание.

Спасибо за создание, это действительно полезный ресурс, к которому я регулярно возвращаюсь. Есть ли шанс, что вы могли бы добавить 256 кГц в качестве частоты дискретизации? Это довольно часто встречается в ультразвуковых приборах.

Хорошо, Сэм, готово. 😉

Здравствуйте,
У меня вопрос об аудиоканалах.
Как может быть 65535 каналов в аудиофайле?

Здравствуйте, Saturn, потому что 65535 действительно является максимальным числом аудиоканалов, поддерживаемым форматом файла .wav. Дополнительную информацию можно найти здесь.

Звукорежиссер решил записать фоновый звук для предстоящего фильма в стереофоническом режиме. Для создания высококачественного несжатого цифрового аудиофайла звукоинженер будет использовать разрядность 16 бит и частоту дискретизации 88 кГц. Каков будет приблизительный итоговый размер файла для звуковой дорожки продолжительностью 1,5 минуты 37 секунд?

Здравствуйте, roury! Конечно, просто введите эти данные в калькулятор выше.

да, извините, я думал, что сделал что-то не так, но теперь все хорошо.. большое спасибо

Здравствуйте, Колин! Я разрабатываю студию и пытаюсь рассчитать пропускную способность, которую должен иметь мой локальный сервер, чтобы иметь возможность запускать большую сессию оркестрового озвучивания — 400 дорожек (96 кГц/24 бит) на двух Рабочие станции Protools и видео 4K на третьей — чтобы прийти к выводу, какое серверное решение будет правильным.

Привет, Адитья! Всегда полезно знать, как люди используют мои онлайн-инструменты. Удачи вашему проекту!

Привет, Колин!
Я пытаюсь загрузить файлы аудиокниг в систему продажи аудиокниг Findaway Voices. Я автор и понятия не имею о битах и ​​т. д. Файлы 129-битные. Компании нужны файлы в 192000 бит. Это звучит так, как будто есть так много различий. Что я делаю? Надеюсь, вы можете помочь. Спасибо.
КДж

Здравствуйте, KJ,
Похоже, вы записали свою аудиокнигу в формате mp3, да? С точки зрения кодирования mp3-файла, описание файла как 128 или 129 «бит» не имеет смысла. Важно понимать, что кодеки mp3-файлов (CODEC — сокращение от encode/decode) обычно выражаются в кбит/с, что означает килобиты В СЕКУНДУ, другими словами, это количество данных, которые передаются в потоке в секунду при воспроизведении. файл, поэтому он называется битрейтом — он НЕ относится к общему количеству битов в самом файле; размер файла определяется длительностью закодированного звука, умноженной на скорость передачи данных. Основная формула: Размер файла (биты) = Продолжительность (секунды) * Скорость передачи данных (биты в секунду).

Это также звучит так, как будто вы, возможно, использовали переменную скорость передачи данных (VBR), потому что 129 кбит/с (файлы не могут иметь 129 бит/с — это было бы смехотворно низкой скоростью передачи данных) не совсем стандартно для CBR (непрерывная скорость передачи битов). скорость) mp3-файлов — хотя стандартная скорость передачи данных — 128 кбит/с, это может быть просто ошибкой отчета.

Я ознакомился с их техническими требованиями, и вашему дистрибьютору, похоже, требуются либо файлы mp3 со скоростью 192 кбит/с, либо файлы FLAC с частотой дискретизации 44,1 кГц (и, по-видимому, поскольку они не уточняют это, 16-битные ).

В любом случае, похоже, что вы записали свои файлы со скоростью 128 или 129 кбит/с вместо требуемых 192 кбит/с, поэтому вам нужно будет исправить их перед отправкой. Поскольку mp3 — это формат с потерями, перекодирование в mp3 со скоростью 192 кбит/с неизбежно приведет к ухудшению качества (что может быть для вас приемлемым или неприемлемым). Однако способ, которым я справился бы с этим (за исключением перезаписи), состоял бы в том, чтобы преобразовать файлы в WAV (с частотой 44,1 кГц/16 бит), а затем в FLAC (который сжат, но без потерь) и использовать это как формат доставки — таким образом вы не потеряете качество исходных файлов.

Поскольку вы спрашиваете моего совета; Я предлагаю вам в будущем всегда записывать файлы WAV (несжатые и без потерь), а НЕ mp3 (которые и сжаты, и с потерями). MP3 хорош как формат доставки, но (по нескольким причинам, слишком сложным, чтобы вдаваться в них) далек от идеального формата записи. Лично я всегда записывал разговорный материал (музыка немного отличается) в виде стандартного файла WAV с частотой дискретизации 44,1 кГц/16 бит или 48 кГц/16 бит. Затем вы можете конвертировать в mp3 (или любой другой формат, который может потребоваться) для доставки, сохраняя исходные файлы WAV нетронутыми на случай, если вам может понадобиться преобразовать их в другой формат позже без потери качества звука.

PostgreSQL имеет богатый набор собственных типов данных, доступных пользователям. Пользователи могут добавлять новые типы в PostgreSQL с помощью команды CREATE TYPE.

< tr> < td>число двойной точности с плавающей запятой
Имя Псевдонимы Описание
bigint int8 8-байтовое целое число со знаком
bigserial serial8 автоинкремент восьмибайтового целого числа
bit [ (n) ] битовая строка фиксированной длины
< tt>bit Variing [ (n) ] varbit битовая строка переменной длины
логическое значение логическое значение логическое логическое значение (true/false)
коробка прямоугольная коробка в плоскости
bytea бинарные данные ("массив байтов")
переменный символ [ (n) ] varchar [ (n) ] строка символов переменной длины
символ [ (n) ] символ [ (n) ] символ фиксированной длины строка действия
cidr сетевой адрес IPv4 или IPv6
круг круг в плоскости
дата календарная дата (год, месяц, день)
двойная точность float8
inet адрес хоста IPv4 или IPv6
integer int, int4 четырехбайтовое целое число со знаком
интервал [ (p) ] промежуток времени
линия бесконечная линия в плоскости
lseg< /td> отрезок линии в плоскости
macaddr MAC-адрес
деньги сумма в валюте
числовой [ (p, s) ] десятичный [ (p, s) ] точное числовое значение выбираемого p разрез
путь геометрический путь на плоскости
< tt>точка геометрическая точка на плоскости
многоугольник замкнутая геометрическая путь в плоскости
real float4 одинарная точность число с плавающей запятой
smallint int2 со знаком два -byte integer
serial serial4 автоинкремент четыре- byte integer
текст строка символов переменной длины
время [ (p) ] [ без часового пояса ] время суток
< tt>time [ (p) ] с часовым поясом timetz время суток, включая время зона
метка времени [ (p) ] [без часового пояса ] дата и время
метка времени [ (p) ] с указанием часового пояса< /tt> timestamptz дата и время, включая часовой пояс

Каждый тип данных имеет внешнее представление, определяемое входными и выходными функциями. Многие из встроенных типов имеют очевидные внешние форматы. Однако некоторые типы либо уникальны для PostgreSQL, например геометрические пути, либо имеют несколько возможных форматов, например типы даты и времени. Некоторые входные и выходные функции необратимы. То есть результат функции вывода может потерять точность по сравнению с исходным вводом.

Имя Размер хранилища Описание Диапазон
smallint 2 байта целое число малого диапазона - от 32768 до +32767
целое число 4 байта обычный выбор для целого числа -2147483648 до +2147483647
bigint 8 байт целое число большого диапазона -9223372036854775808 до 9223372036854775807
десятичное число переменная user- указанная точность, точная без ограничений
числовой переменная указанная пользователем точность, точная без ограничений
реальная 4 байта переменная-точность, неточная 6 десятичных цифр
двойная точность 8 байты переменная-точность, неточная 15 десятичных цифр
последовательный 4 байта автоинкрементное целое от 1 до 2147483647
bigserial 8 байт большое автоинкрементное целое от 1 до 9223372036854775807

Синтаксис констант для числовых типов описан в Разделе 4.1.2. Числовые типы имеют полный набор соответствующих арифметических операторов и функций.Обратитесь к главе 9 для получения дополнительной информации. В следующих разделах подробно описаны типы.

8.1.1. Целочисленные типы

Типы smallint, integer и bigint хранят целые числа, т. е. числа без дробных частей, различных диапазонов. Попытки сохранить значения за пределами допустимого диапазона приведут к ошибке.

Обычно выбирается тип integer, так как он предлагает наилучший баланс между диапазоном, размером хранилища и производительностью. Тип smallint обычно используется, только если дисковое пространство ограничено. Тип bigint следует использовать только в том случае, если диапазона integer недостаточно, поскольку последний определенно быстрее.

Тип bigint может работать некорректно на всех платформах, поскольку он зависит от поддержки компилятором восьмибайтовых целых чисел. На машине без такой поддержки bigint действует так же, как integer (но по-прежнему занимает восемь байт памяти). Однако мы не знаем ни одной разумной платформы, на которой это действительно так.

8.1.2. Числа произвольной точности

Тип numeric может хранить числа с точностью до 1000 знаков и точно выполнять вычисления. Особенно рекомендуется для хранения денежных сумм и других величин, где требуется точность. Однако арифметические операции над числовыми значениями выполняются очень медленно по сравнению с целочисленными типами или типами с плавающей запятой, описанными в следующем разделе.

В дальнейшем мы используем следующие термины: масштаб числового – это количество десятичных цифр в дробной части справа от десятичной точки. Точность числового – это общее количество значащих цифр в целом числе, то есть количество цифр по обе стороны от десятичной точки. Таким образом, число 23,5141 имеет точность 6 и масштаб 4. Можно считать, что целые числа имеют нулевой масштаб.

Можно настроить как максимальную точность, так и максимальный масштаб столбца numeric. Чтобы объявить столбец типа numeric, используйте синтаксис

Точность должна быть положительной, шкала нулевой или положительной. В качестве альтернативы

выбирает масштаб 0. Указание

без какой-либо точности или масштаба создает столбец, в котором могут храниться числовые значения любой точности и масштаба, вплоть до предела точности реализации. Столбец такого типа не будет приводить входные значения к какому-либо конкретному масштабу, тогда как числовые столбцы с объявленным масштабом будут приводить входные значения к этому масштабу. (Стандарт SQL требует шкалы по умолчанию, равной 0, т. е. приведения к целочисленной точности. Мы считаем это немного бесполезным. Если вас беспокоит переносимость, всегда указывайте точность и масштаб явно.)

Если масштаб сохраняемого значения больше заявленного масштаба столбца, система округлит значение до указанного количества дробных цифр. Затем, если количество цифр слева от десятичной точки превышает заявленную точность минус заявленный масштаб, возникает ошибка.

Числовые значения физически хранятся без дополнительных нулей в начале или в конце. Таким образом, заявленная точность и масштаб столбца являются максимальными, а не фиксированными выделениями. (В этом смысле тип numeric больше похож на varchar(n), чем на char(n).) Фактические требования к памяти составляют два байта для каждой группы из четырех десятичных цифр плюс восемь байтов служебных данных.

Помимо обычных числовых значений, тип numeric допускает использование специального значения NaN, означающего "не-число" . Любая операция над NaN дает другой NaN. Записывая это значение как константу в команде SQL, вы должны заключить его в кавычки, например, UPDATE table SET x = 'NaN'. При вводе строка NaN распознается без учета регистра.

Типы десятичный и числовой эквивалентны. Оба типа являются частью стандарта SQL.

8.1.3. Типы с плавающей запятой

Неточные значения означают, что некоторые значения не могут быть точно преобразованы во внутренний формат и сохраняются как приблизительные значения, поэтому сохранение и распечатка значений могут показывать небольшие расхождения. Управление этими ошибками и то, как они распространяются в вычислениях, является предметом целой области математики и компьютерных наук и не будет здесь обсуждаться далее, за исключением следующих моментов:

Если вам требуется точное хранение и расчеты (например, для денежных сумм), используйте вместо этого тип numeric.

Если вы хотите выполнять сложные вычисления с этими типами для чего-то важного, особенно если вы полагаетесь на определенное поведение в граничных случаях (бесконечность, потеря значимости), вам следует тщательно оценить реализацию.

Сравнение двух значений с плавающей запятой на равенство может работать, а может и не работать должным образом.

На большинстве платформ тип real имеет диапазон от 1E-37 до 1E+37 с точностью не менее 6 знаков после запятой. Тип двойной точности обычно имеет диапазон от 1E-307 до 1E+308 с точностью не менее 15 цифр. Слишком большие или слишком маленькие значения вызовут ошибку. Округление может иметь место, если точность введенного числа слишком высока. Слишком близкие к нулю числа, которые не могут быть представлены как отличные от нуля, вызовут ошибку потери значимости.

Помимо обычных числовых значений, типы с плавающей запятой имеют несколько специальных значений:

Они представляют собой специальные значения IEEE 754 "бесконечность" , "отрицательная бесконечность" и "не-число" соответственно. (На машине, арифметика с плавающей запятой которой не соответствует IEEE 754, эти значения, вероятно, не будут работать должным образом.) При записи этих значений как констант в команде SQL вы должны заключать их в кавычки, например UPDATE table УСТАНОВИТЕ x = 'Бесконечность'. При вводе эти строки распознаются без учета регистра.

PostgreSQL также поддерживает стандартные для SQL нотации float и float(p) для указания неточных числовых типов. Здесь p указывает минимально допустимую точность двоичных цифр. PostgreSQL принимает float(1) в float(24) как выбор типа real, тогда как float(25) для float(53) выберите двойную точность. Значения p за пределами допустимого диапазона вызывают ошибку. float без указания точности означает двойную точность.

Примечание. До PostgreSQL 7.4 точность в float(p) означала столько-то десятичных цифр. Это было исправлено, чтобы соответствовать стандарту SQL, который указывает, что точность измеряется в двоичных цифрах. Предположение, что real и двойная точность имеют ровно 24 и 53 бита в мантиссе соответственно, верно для реализаций с плавающей запятой стандарта IEEE. На платформах, отличных от IEEE, он может немного отличаться, но для простоты на всех платформах используются одни и те же диапазоны p.

8.1.4. Серийные типы

Типы данных serial и bigserial не являются истинными типами, а являются просто удобными обозначениями для настройки столбцов уникальных идентификаторов (аналогично AUTO_INCREMENT свойство, поддерживаемое некоторыми другими базами данных). В текущей реализации указание

эквивалентно указанию:

Таким образом, мы создали целочисленный столбец и настроили его значения по умолчанию, которые будут назначаться из генератора последовательности. Ограничение NOT NULL применяется, чтобы гарантировать, что нулевое значение не может быть вставлено явно. В большинстве случаев вы также захотите добавить ограничение UNIQUE или PRIMARY KEY, чтобы предотвратить случайную вставку повторяющихся значений, но это не происходит автоматически.

Примечание. До PostgreSQL 7.3 serial подразумевал UNIQUE. Это уже не автомат. Если вы хотите, чтобы последовательный столбец находился в уникальном ограничении или первичном ключе, теперь его необходимо указать, как и любой другой тип данных.

Чтобы вставить следующее значение последовательности в столбец serial, укажите, что столбцу serial должно быть присвоено значение по умолчанию. Это можно сделать либо путем исключения столбца из списка столбцов в операторе INSERT, либо с помощью ключевого слова DEFAULT.

Имена типов serial и serial4 эквивалентны: оба создают столбцы integer. Имена типов bigserial и serial8 работают точно так же, за исключением того, что они создают столбец bigint. bigserial следует использовать, если предполагается использование более 2 31 идентификаторов за время существования таблицы.

Последовательность, созданная для столбца serial, автоматически удаляется при удалении столбца-владельца и не может быть удалена в противном случае. (Это было не так в выпусках PostgreSQL до 7.3. Обратите внимание, что это автоматическое связывание не будет происходить для последовательности, созданной путем перезагрузки дампа из базы данных до 7.3; файл дампа не содержит информации, необходимой для установления связи зависимости. ) Кроме того, эта зависимость между последовательностью и столбцом создается только для самого столбца serial. Если какие-либо другие столбцы ссылаются на последовательность (возможно, путем ручного вызова функции nextval), они будут разорваны, если последовательность будет удалена. Такое использование последовательности столбцов serial считается дурным тоном; если вы хотите передать несколько столбцов из одного и того же генератора последовательности, создайте последовательность как независимый объект.

Эта утилита вычисляет размер аудиофайлов (как несжатых, так и аудиофайлов PCM/IEEE FP, таких как .WAV/ .W64/ .RF64, .AIFF/.AIF, а также файлы со сжатием с потерями, такие как MP3, WMA, AAC и OGG Vorbis), в зависимости от выбранной продолжительности записи и настроек файла:

**N.B.** Если вы ищете калькулятор для обратного действия (т. е. для расчета продолжительности из доступного места), перейдите сюда.

Введите продолжительность файла в часах, минутах, секундах и миллисекундах. Для расчета размера несжатых файлов также требуется информация о частоте дискретизации, битовой глубине и канале (но не битовая скорость, которая вычисляется автоматически). Помимо продолжительности, для расчета размера сжатых файлов, таких как MP3 и т. д., требуется только информация о скорости передачи (в этом случае информация о частоте дискретизации, разрядности и канале игнорируется). Для сжатых файлов, закодированных с помощью CBR (постоянная скорость передачи данных), отображаемый размер файла должен быть максимально точным (независимо от переменных, таких как информация заголовка и т. д. — см. ниже). Для сжатых файлов, закодированных с помощью VBR (переменная скорость передачи данных), отображаемый размер файла может быть немного менее точным, поскольку в этом случае скорость передачи данных может варьироваться в зависимости от программного материала.

Обратите внимание, что размер файла, сообщаемый вашим устройством, может немного отличаться от показанного из-за методов размещения файлов, возможных различий в количестве информации в заголовке и/или того факта, что некоторые операционные системы рассчитывают место на жестком диске иначе, чем другие (например, , некоторые считают его в двоичном формате и называют 1 КБ 1024 байтами, в то время как другие (и большинство производителей жестких дисков) вычисляют его в десятичном формате и называют 1 КБ 1000 байтами) — этот калькулятор поддерживает оба метода.

Если вы найдете это полезным и/или у вас есть какие-либо комментарии или предложения, дайте мне знать через раздел комментариев ниже (пожалуйста, ознакомьтесь с правилами нашего веб-сайта перед публикацией).

Дайте мне знать, что вы думаете. Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

74 мысли о «Калькуляторе размера аудиофайла»

Очень полезно, спасибо! Я получаю SD-карту для своего Zoom R8, и меня беспокоит, будет ли достаточно скорости записи U1. Выяснилось, что я могу одновременно записывать 64 канала в формате 24 бит/48 кГц, и карта U1 по-прежнему прекрасно с этим справится.

Я потратил время, чтобы выяснить формулы, используемые этим сайтом, чтобы найти размер файла аудио и максимально возможную длину на основе размера диска и скорости передачи данных, что я смог сделать благодаря этому сайту.
Благодаря этому я узнал, как рассчитать максимальный битрейт аудио на основе длины аудио и размера диска. Вот формула, если вам это нужно по какой-то причине:

((размер файла в мегабайтах / длина в секундах) * 1000) * 8

Если бы не этот сайт, я бы не смог его сделать, так как раньше не мог уложить в голове, как это сделать.

Если вам интересно, какой смысл в возможности рассчитать максимально возможный битрейт, это полезно для сжатия аудио до определенного размера файла, обычно для того, чтобы вы могли обойти ограничение размера файла на веб-сайте. Но для меня это полезно, потому что значительно упрощает сжатие аудио до размеров файлов, пригодных для потоковой передачи.

Рад, что вы нашли этот сайт полезным и нашли решение – вы действительно правы. Однако вашу формулу можно упростить для ясности. На самом деле, самые простые формулы для расчета размера файла, продолжительности или битрейта будут такими:

Размер файла (бит) = продолжительность (секунды) * скорость передачи данных (бит в секунду)

Продолжительность (секунды) = размер файла (биты) / скорость передачи данных (биты в секунду)

Битрейт (бит в секунду) = размер файла (бит) / продолжительность (секунды)

Это именно то, что мне было нужно. Я рассматриваю возможность реализации звукового сэмплера на плате микроконтроллера, и мне нужно знать, какая емкость мне понадобится. Это был идеальный инструмент для этого. Спасибо!

Очень полезно! Спасибо

Это то, что я искал. Спасибо.

Отличный инструмент! Спасибо за его создание.

Спасибо за создание, это действительно полезный ресурс, к которому я регулярно возвращаюсь. Есть ли шанс, что вы могли бы добавить 256 кГц в качестве частоты дискретизации? Это довольно часто встречается в ультразвуковых приборах.

Хорошо, Сэм, готово. 😉

Здравствуйте,
У меня вопрос об аудиоканалах.
Как может быть 65535 каналов в аудиофайле?

Здравствуйте, Saturn, потому что 65535 действительно является максимальным числом аудиоканалов, поддерживаемым форматом файла .wav. Дополнительную информацию можно найти здесь.

Звукорежиссер решил записать фоновый звук для предстоящего фильма в стереофоническом режиме. Для создания высококачественного несжатого цифрового аудиофайла звукоинженер будет использовать разрядность 16 бит и частоту дискретизации 88 кГц. Каков будет приблизительный итоговый размер файла для звуковой дорожки продолжительностью 1,5 минуты 37 секунд?

Здравствуйте, roury! Конечно, просто введите эти данные в калькулятор выше.

да, извините, я думал, что сделал что-то не так, но теперь все хорошо.. большое спасибо

Здравствуйте, Колин! Я разрабатываю студию и пытаюсь рассчитать пропускную способность, которую должен иметь мой локальный сервер, чтобы иметь возможность запускать большую сессию оркестрового озвучивания — 400 дорожек (96 кГц/24 бит) на двух Рабочие станции Protools и видео 4K на третьей — чтобы прийти к выводу, какое серверное решение будет правильным.

Привет, Адитья! Всегда полезно знать, как люди используют мои онлайн-инструменты. Удачи вашему проекту!

Привет, Колин!
Я пытаюсь загрузить файлы аудиокниг в систему продажи аудиокниг Findaway Voices. Я автор и понятия не имею о битах и ​​т. д. Файлы 129-битные. Компании нужны файлы в 192000 бит. Это звучит так, как будто есть так много различий. Что я делаю? Надеюсь, вы можете помочь. Спасибо.
КДж

Здравствуйте, KJ,
Похоже, вы записали свою аудиокнигу в формате mp3, да? С точки зрения кодирования mp3-файла, описание файла как 128 или 129 «бит» не имеет смысла. Важно понимать, что кодеки mp3-файлов (CODEC — сокращение от encode/decode) обычно выражаются в кбит/с, что означает килобиты В СЕКУНДУ, другими словами, это количество данных, которые передаются в потоке в секунду при воспроизведении. файл, поэтому он называется битрейтом — он НЕ относится к общему количеству битов в самом файле; размер файла определяется длительностью закодированного звука, умноженной на скорость передачи данных. Основная формула: Размер файла (биты) = Продолжительность (секунды) * Скорость передачи данных (биты в секунду).

Это также звучит так, как будто вы, возможно, использовали переменную скорость передачи данных (VBR), потому что 129 кбит/с (файлы не могут иметь 129 бит/с — это было бы смехотворно низкой скоростью передачи данных) не совсем стандартно для CBR (непрерывная скорость передачи битов). скорость) mp3-файлов — хотя стандартная скорость передачи данных — 128 кбит/с, это может быть просто ошибкой отчета.

Я ознакомился с их техническими требованиями, и вашему дистрибьютору, похоже, требуются либо файлы mp3 со скоростью 192 кбит/с, либо файлы FLAC с частотой дискретизации 44,1 кГц (и, по-видимому, поскольку они не уточняют это, 16-битные ).

В любом случае, похоже, что вы записали свои файлы со скоростью 128 или 129 кбит/с вместо требуемых 192 кбит/с, поэтому вам нужно будет исправить их перед отправкой. Поскольку mp3 — это формат с потерями, перекодирование в mp3 со скоростью 192 кбит/с неизбежно приведет к ухудшению качества (что может быть для вас приемлемым или неприемлемым). Однако способ, которым я справился бы с этим (за исключением перезаписи), состоял бы в том, чтобы преобразовать файлы в WAV (с частотой 44,1 кГц/16 бит), а затем в FLAC (который сжат, но без потерь) и использовать это как формат доставки — таким образом вы не потеряете качество исходных файлов.

Поскольку вы спрашиваете моего совета; Я предлагаю вам в будущем всегда записывать файлы WAV (несжатые и без потерь), а НЕ mp3 (которые и сжаты, и с потерями). MP3 хорош как формат доставки, но (по нескольким причинам, слишком сложным, чтобы вдаваться в них) далек от идеального формата записи. Лично я всегда записывал разговорный материал (музыка немного отличается) в виде стандартного файла WAV с частотой дискретизации 44,1 кГц/16 бит или 48 кГц/16 бит. Затем вы можете конвертировать в mp3 (или любой другой формат, который может потребоваться) для доставки, сохраняя исходные файлы WAV нетронутыми на случай, если вам может понадобиться преобразовать их в другой формат позже без потери качества звука.

Читайте также: