![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
justauser |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 22.9.2014 Репутация: нет Всего: нет |
Что то я не соображу как распаковать на 2е переменных 1 байт состоящий из двух половинок по 4 бита или любой другой вариант 6+2 или 3+5 бит. Понятно как можно распаковать на байты
а как распаковать на ($var1,$var2,$var3,$var4,$var5)если первый байт содержит две переменных (4+4 бит) и последний тоже (2+6 бит)? И как их запаковывать? Это сообщение отредактировал(а) justauser - 28.9.2014, 10:15 |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
самое простое -- вручную
|
|||
|
||||
justauser |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 22.9.2014 Репутация: нет Всего: нет |
А если серьезно? Я читал http://perldoc.perl.org/functions/pack.html и http://perldoc.perl.org/functions/unpack.html не помогает. Мне нужно из одного байта сделать два: взять 3 младших бита дополнить 0 до 8 и присвоить переменной дальше взять оставшиеся 5 опять дополнить 0 в старших разрядах и это вторая переменная. Не соображу как. Можно пример?
|
|||
|
||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Оно?
|
|||
|
||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Ещё вариант
Это сообщение отредактировал(а) Pfailed - 28.9.2014, 19:41 |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
зачем так сложно?
# perl -le 'printf "%b, %b\n", $ARGV[0] & 0b00000111, $ARGV[0] >> 3' $[ 0xdd ] 101, 11011 |
|||
|
||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Так то тут тоже самое написано
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
без chr и ord
|
|||
|
||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
ТС байт не числом приходит, а в бинарном виде, что и возвращает chr().
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# perl -le '$a = ( unpack ("C S C", pack ("H*", "a5a5b6b6")))[0]; printf "%b, %b\n", $a & 0b00000111, $a >> 3'
101, 10100 |
|||
|
||||
justauser |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 22.9.2014 Репутация: нет Всего: нет |
Идею понял, спасибо.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |