Пишу, по большей части, про историю, свою жизнь и немного про программирование.

С наступающим новым годом!

perl -MEncode -e '
$_ =
"1101000100100000111011011110111011100010111110111110110000100000111000111110111011100100111011101110110000100001";
@x = /(d{8})/g; print Dumper @x; print encode_utf8(decode("cp1251", chr(eval "0b$_"))) for @x; print "n"'

python -c "print ''.join((lambda s: [chr(int(s[x:x+8], 2)).decode('cp1251') for x in xrange(0, len(s), 8)])(
'1101000100100000111011011110111011100010111110111110110000100000111000111110111011100100111011101110110000100001'))"

php -r 'echo iconv("cp1251", "utf-8", join(array_map("chr", array_map("bindec", str_split
("1101000100100000111011011110111011100010111110111110110000100000111000111110111011100100111011101110110000100001",
8)))));'

powershell -Command "[system.string]::join('', @([regex]::split(
'1101000100100000111011011110111011100010111110111110110000100000111000111110111011100100111011101110110000100001',
'(.{8})') | Where {$_} | %{ [Convert]::ToInt16($_, 2)} |
%{[System.Text.Encoding]::GetEncoding('utf-8').GetString([System.Text.Encoding]::
Convert([System.Text.Encoding]::GetEncoding('windows-1251'), 
[System.Text.Encoding]::GetEncoding('utf-8'), [byte]$_))}))"

Вариант на Перле — Вячеслава Матюхина, остальные — мои. Текст на Powershell выглядит монструозно, но на деле там самый страшный кусок — перевод байтовой строки cp1251 в utf-8, всё остальное очень простое.

12 комментариев
cyanide-burnout.livejournal.com 2009

Слова «наступающим» там нету :) А во стальном — взаимно :)

astur (astur.net.ru) 2009

Прекрасные скрипты :)

..и тебя с Новым Годом! Всего тебе, чего у тебя нет, но хочется!

u1itka.livejournal.com 2009

Надо было в троичной системе счисления, год же 2010!!!

С наступающим!

Евгений Степанищев (bolknote.ru) 2009

Комментарий для u1itka.livejournal.com:

Строки были бы куда огромней :)

Евгений Степанищев (bolknote.ru) 2009

Комментарий для astur.net.ru:

Спасибо!

Евгений Степанищев (bolknote.ru) 2009

Комментарий для cyanide-burnout.livejournal.com:

С «наступающим» длиннее получалось, в строку не влезало :)

xorax.livejournal.com 2009

похапэшное у меня не выполнилось. и поделом: в новом году нам всем будет лучше, если похапе сдохнет:)

Евгений Степанищев (bolknote.ru) 2009

Комментарий для xorax.livejournal.com:

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

Пусть в следующем году винят не инструмент, а того, кто им пользуется!

Алик Кириллович (www.alik.su) 2009

JavaScript, из-за метода reduce, пока Firefox/Chrome only:

alert («1101000100100000111011011110111011100010111110111110110000100000111000111110111011100100111011101110110000100001».replace(/\d{8}/g, «$&,»).split(«,»).reduce(function (p, a) {return (p + String.fromCharCode (parseInt (a, 2) + (parseInt (a, 2) > 191 ? 848 : 0)))}, «„))

Евгений Степанищев (bolknote.ru) 2009

Комментарий для www.alik.su:

Точно, JS забыл! :)

Алик Кириллович (www.alik.su) 2009

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

Windows Script Host (wscript.exe) — не требует установки, встроена в Windows

или

Mozilla Rhino (jrunscript) — требует standalone Mozilla Rhino или JDK 1.6, но, зато кросплатформенна

Могу сделать, если хотите.

Можете добавить пример на JavaScript в топик; на сколько я знаю, это один из ваших любимых языков :-)

Евгений Степанищев (bolknote.ru) 2009

Комментарий для www.alik.su:

Да, так и есть. Сделайте, добавлю после НГ:)