Как вы используете двоичное преобразование в Python / Bash / AWK? - PullRequest
1 голос
/ 16 апреля 2009

Я новичок в бинарном преобразовании. Я использую Python, Bash и AWK ежедневно.

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

Где вы используете двоичное преобразование в Python / Bash / AWK?

Хотелось бы увидеть примеры кодов.

Ответы [ 3 ]

3 голосов
/ 16 апреля 2009

Преобразование строк двоичных цифр в число с использованием Python в командной строке:

binary=00001111
DECIMAL=$(python -c "print int('$BINARY', 2)")
echo $decimal

См. Документы для функции int .

Ой, подождите, я неправильно понял вопрос, вы хотите знать, что вам дает преобразование в двоичный файл. Ну, это зависит от того, что вы подразумеваете под "преобразовать в двоичный файл". Скажем, я хочу сохранить файл с миллионами целых чисел. Целые числа будут между 0 и 32 000. Если бы я сохранял их в виде текста, для каждого числа потребовалось бы в лучшем случае два байта (однозначное число и разделитель), в худшем случае шесть байтов (пятизначное число и разделитель) со средним размером 4,6 байта на число ( см. комментарий к математике). У меня тоже не было бы простого способа выбрать 15-й номер. Если бы я хранил их как 16-битные целые числа (в двоичном виде), каждое число занимало бы ровно два байта, и я мог бы найти 15-е число с помощью seek, чтобы сместить 2*(15-1) и считав два байта. Кроме того, когда я делаю математику в текстовой версии, я (или мой язык) должен сначала преобразовать строку в число, тогда как двоичная версия уже является 16-битным числом.

Итак, вкратце, вы используете двоичные типы для

  1. Экономия места
  2. имеют постоянные размеры записей
  3. Ускорение программ
2 голосов
/ 16 апреля 2009

В оболочке, хорошее использование dc:

echo 2i 00001111 pq | dc

2i означает: база для ввода чисел составляет 2 .

pq означает: печать и выход .

Другой способ:

echo 2o 15 pq | dc

Я не помню, использовал ли эту функцию в реальных ситуациях.

0 голосов
/ 06 июля 2011

В более новых версиях Python существует функция bin(), которая, как я полагаю, принимает int и возвращает двоичный литерал формы 0b011010 или любого другого.

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