Hex>Binary и обратно

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Grih65kop
Сообщения: 145

Hex>Binary и обратно

Сообщение Grih65kop »

Необходимо имеющую строку в hex, например "4c4e4", перевести в бинарный вид.
И обратно, например "111101011001" в hex.

Начал делать простой заменой

Код: Выделить всё

sed 's/0/0000/g'


и т.д. но мне кажется это совершенно плохой идеей.
Утилиты bc, dc использовать нельзя.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Hex>Binary и обратно

Сообщение sash-kan »

gnu bc — чуть лучшая идея·

$ echo 'obase=2;ibase=16;4E4E4' | bc
1001110010011100100
$ echo 'obase=16;ibase=2;111101011001' | bc
F59
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Grih65kop
Сообщения: 145

Re: Hex>Binary и обратно

Сообщение Grih65kop »

Не совсем полное решение по переводу Hex>Binary без участия bc.

printf '\x4c4e4cc13' | xxd -b

Код: Выделить всё

0000000: 01001100 00110100 01100101 00110100 01100011 01100011  L4e4cc
0000006: 00110001 00110011                                      13


Буду благодарен если подскажите как правильно выбрать и склеить часть с бинарным кодом. Выбирать через разделитесль " " не вариант т.к. строка динамическая и мы не знаем когда она закончится.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Hex>Binary и обратно

Сообщение drBatty »

Grih65kop писал(а):
21.05.2012 22:36
еобходимо имеющую строку в hex, например "4c4e4", перевести в бинарный вид.

Код: Выделить всё

#!/bin/sed -rf
s/0/0000/g
s/1/0001/g
s/2/0010/g
...
s/f/1111/gi

Grih65kop писал(а):
22.05.2012 01:22
Не совсем полное решение по переводу Hex>Binary без участия bc.

какая блин разница, bc или xxd? это вам задачку задал препод что-ли? тогда в job.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Hex>Binary и обратно

Сообщение sash-kan »

Grih65kop писал(а):
22.05.2012 01:22
printf '\x4c4e4cc13'

никого ничего не смущает в результате?
сравните с:
$ echo 'obase=2;ibase=16;4C4E4CC13' | bc
10011000100111001001100110000010011
(для выравнивания до четырех цифр надо ноль приписать в начале)

p.s. вместо писем в личку лучше задавать вопросы прямо в теме·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Hex>Binary и обратно

Сообщение ZyX »

Кстати, это, разумеется, можно сделать без каких‐либо значимых усилий на zsh:

(Created by format.vim)

$ echo $(( [#2] 0x2C38 )) 2#10110000111000 $ echo $(( [#2] 16#2C38 )) 2#10110000111000


Спасибо сказали: