Преобразование между двоичным и десятичным - PullRequest
3 голосов
/ 14 сентября 2010

Как я могу преобразовать между десятичным и двоичным?Я работаю на платформе Solaris 10

Десятичное число в двоичное
4000000002 -> 100000000000000000000000000010

Двоичное число в десятичное
100000000000000000000000000010 -> 4000000002

1009

Я использовал следующую команду в Unix, но это занимает много времени.У меня есть 20 миллионов таких записей

Для двоичного числа в двоичное значение, установите obase в 2:

echo 'obase=2;4000000002' | bc 

Для двоичного числа в десятичное число, установите в ibase значение 2:

echo 'ibase=2;100000000000000000000000000010' | bc 

1 Ответ

1 голос
/ 14 сентября 2010

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

Вот простая иллюстрация, начиная с ваших чисел в файле с именем input.txt:

# To binary
$ ( echo 'obase=2;ibase=16;'; cat input.txt ) | bc | paste input.txt - > output.txt

# To hex
$ ( echo 'obase=16;ibase=2;'; cat input.txt ) | bc | paste input.txt - > output.txt

Результаты записываются в файл output.txt.

paste включен для получения результата с табуляцией, как

07      111
1A      11010
20      100000
2B      101011
35      110101
80      10000000
FF      11111111

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

$ ( echo 'obase=2;ibase=16;'; cat input.txt ) | bc > output.txt

Обратите внимание, что вы, вероятно, должны установить ibase, а также obase, чтобы преобразование было правильным. gclswceap1d-mc48191-CRENG_DEV [/ home / mc48191 / scratch]

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