Uu(e) кодирование


Метод словарного кодирования Зива-Лемпела. Дифференциальное кодирование (стр. 1 из 2)

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Реферат на тему:

«Словарные методы кодирования. Метод Зива-Лемпела. Дифференциальное кодирование»

Словарные методы кодирования. Метод Зива-Лемпела

Практически все словарные методы кодирования пpинадлежат семье алгоритмов из работы двух израильских ученых — Зива и Лемпела, опубликованной в 1977 году. Сущность их состоит в том, что фразы в сжимаемом тексте заменяются указателем на то место, где они в этом тексте уже pанее появлялись .

Это семейство алгоритмов называется методом Зива-Лемпела и обозначается как LZ-сжатие . Этот метод быстpо пpиспосабливается к стpуктуpе текста и может кодировать короткие функциональные слова, так как они очень часто в нем появляются. Новые слова и фразы могут также формироваться из частей ранее встреченных слов.

Декодирование сжатого текста осуществляется напрямую — происходит простая замена указателя готовой фразой из словаря, на которую тот указывает. На практике LZ-метод добивается хорошего сжатия, его важным свойством является очень быстрая работа декодера. (Когда мы говорим о тексте, то предполагаем, что кодированию подвергается некоторый вектор данных с конечным дискретным алфавитом, и это не обязательно текст в буквальном смысле этого слова.)

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

Все словарные методы кодирования можно разбить на две группы.

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

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

Все методы этой группы базируются на алгоритме, разработанном и опубликованном, как уже отмечалось, сравнительно недавно — в 1977 году Абрахамом Лемпелем и Якобом Зивом, — LZ77. Наиболее совершенным представителем этой группы, включившим в себя все достижения, полученные в данном направлении, является алгоритм LZSS, опубликованный в 1982 году Сторером и Шимански.

Процедура кодирования в соответствии с алгоритмами этой группы иллюстрируется рис. 1.

Алгоритмы второй группы в дополнение к исходному словарю источника создают словарь фраз, представляющих собой повторяющиеся комбинации символов исходного словаря, встречающиеся во входных данных.

При этом размер словаря источника возрастает, и для его кодирования потребуется большее число бит, но значительная часть этого словаря будет представлять собой уже не отдельные буквы, а буквосочетания или целые слова.

Когда кодер обнаруживает фразу, которая ранее уже встречалась, он заменяет ее индексом словаря, содержащим эту фразу. При этом длина кода индекса получается меньше или намного меньше длины кода фразы.

Все методы этой группы базируются на алгоритме, разработанном и опубликованном Лемпелем и Зивом в 1978 году, – LZ78. Наиболее совершенным на данный момент представителем этой группы словарных методов является алгоритм LZW, разработанный в 1984 году Терри Вэлчем.

Идею этой группы алгоритмов можно также пояснить с помощью рис. 2.

Алгоритмы второй группы несколько проще в объяснении их работы, поэтому начнем рассмотрение принципа действия LZ-кодеров с алгоритма LZW.

Рассмотрим в самом общем виде работу LZW-кодера и декодера.

Процедура кодирование

Процесс сжатия выглядит достаточно просто. Мы последовательно считываем символы входного потока (строку) и проверяем, есть ли в уже созданной нами таблице такая строка.

Если строка есть, то считываем следующий символ, а если такой строки нет, — заносим в выходной поток код для предыдущей найденной строки, заносим ее в таблицу и начинаем поиск снова.

Пусть на вход кодера поступает последовательность символов вида / WED / WE / WEE / WEB , при этом размер алфавита входных символовdim A = 255. Схема сжатия выглядит следующим образом:Входные символы Выходной код Новые символы словаря/W / 256 = /W E W 257 = WE D E 258 = ED / D 259 = D/ WE 256 260 = /WE / E 261 = E/ WEE 260 262 = /WEE /W 261 263 = E/W EB 257 264 = WEB B В результате получим выходной код/WED E B . Как при этом изменилась длина выходного кода в сравнении с входным ? Если для двоичного кодирования строки / WED / WE / WEE / WEB длиной в 15 букв и размером алфавита dim A = 255 нам понадобилось бы 15 • log2 255 = 15х8 = 120 бит , то для двоичного кодирования выходной строки кодера / WED E B длиной в 10 новых символов с алфавитом в 264 буквы –10 • 9 = 90 бит.

Поцедура декодирование

Работа кодера/декодера семейства LZ77 — первой опубликованной версии LZ-метода — выглядит несколько иначе.

В алгоритме LZ77 указатели обозначают фразы в окне постоянного pазмеpа, пpедшествующие позиции кода. Максимальная длина заменяемых указателями подстрок определяется параметром F (обычно это от 10 до 20). Эти ограничения позволяют LZ77 использовать «скользящее окно» из N символов. Из них первые N-F были уже закодированы, а последние F составляют упреждающий буфер.

При кодировании символа в первых N-F символах окна ищут самую длинную, совпадающую с этим буфером строку. Она может частично перекрывать буфер, но не может быть самим буфером.

Найденное наибольшее соответствие затем кодируется триадой [i, j, a ] где i есть его смещение от начала буфера, j — длина соответствия, a — первый символ, не соответствующий подстроке окна.

Затем окно сдвигается вправо на j +1 символ и готово к новому шагу алгоритма.

Привязка определенного символа к каждому указателю гарантирует, что кодирование будет выполняться даже в том случае, если для первого символа упpеждающего буфера не будет найдено соответствие.

Объем памяти, требуемый кодеру и декодеру, ограничивается размером окна. Количество бит, необходимое для представления смещения ( i ) в триаде, составляет [log(N-F) ]. Количество символов ( j ), заменяемых триадой, может быть закодировано [logF ] битами.

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

Дифференциальное кодирование

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

Следующий простой пример показывает, какое преимущество может дать дифференциальное кодирование (кодирование разности между соседними отсчетами) в сравнении с простым кодированием без памяти (кодированием отсчетов независимо друг от друга).

Просканируем 8-битовое (256-уровневое) цифровое изображение, при этом десять последовательных пикселов имеют уровни:

144, 147, 150, 146, 141, 142, 138, 143, 145, 142.


Если закодировать эти уровни пиксел за пикселом каким-либо кодом без памяти, использующим 8 бит на пиксел изображения, получим кодовое слово, содержащее 80 бит.

Предположим теперь, что прежде чем подвергать отсчеты изображения кодированию, мы вычислим разности между соседними пикселами. Эта процедура даст нам последовательность следующего вида:

144, 147, 150, 146, 141, 142, 138, 143, 145, 142.

144, 3, 3, — 4, — 5, 1, — 4, 5, 2, -3.

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

144, 144+3, 147+3, 150–4, 146–5, 141+1, 142–4, 138+5, 143+2, 145-3

144, 147, 150, 146, 141, 142, 138, 143, 145, 142.

Для кодирования первого числа из полученной последовательности разностей отсчетов, как и ранее, понадобится 8 бит, все остальные числа можно закодировать 4-битовыми словами (один знаковый бит и 3 бита на кодирование модуля числа ).

Особенности кодирования и декодирования системы PAL

Система PAL была разработана и внедрена в начале 60-х годов фирмой «Телефункен» (ФРГ). Система PAL является более совершенной, чем NTSC. Она позволяет существенно уменьшить присущие системе NTSC фазовые искажения. Впоследствии выяснился еще ряд преимуществ этой системы. Основные характеристики системы PAL: число строк 525, частота полей 60 Гц, поднесущая цветности 4.433618 МГц, ширина полосы 1.3 МГц, несущая звука 4.5 МГц. Рассмотрим эту систему более подробно. Как и в системе NTSC, в системе PAL применена квадратурная модуляция (цветовой) поднесущей, но в отличие от нее фаза составляющей поднесущей, которая модулируется красным цветоразностным сигналом, меняется от строки к строке на 180 градусов (рис.23). Модуляция осуществляется сигналами Еu = 0,493Eb-y и Еv = 0,877Еr-y. Составляющая поднесущей, модулируемая синим цветоразностным сигналом, имеет постоянную фазу. Частота поднесущей выбрана равной f0 = 4,43361875 МГц с учетом минимальной заметности этой поднесущей на окрашенных участках цветного изображения. На черно-белых участках изображения помеха от поднесущей отсутствует, так как она подавляется при передаче черно-белого изображения. Модуляция поднесущей осуществляется с помощью балансных модуляторов (рис.24).

Сигналы, получаемые на выходах балансных модуляторов, складываются в суммирующем устройстве, образуя результирующий сигнал цветности Vрез . Из рис.24 видно, что поднесущая, которая подается на модулятор «В-Y» с генератора Г, подается непосредственно (фаза 0 градусов), а на модулятор «R-Y» через электронный коммутатор ЭК, переключаемый сигналом полустрочной частоты fстр/2. Причем в одной строке поднесущая поступает на модулятор через фазовращатель 90 градусов, а в другой — через инвертор 180 градусов. Как и в системе NTSC, результирующее колебание Vрез имеет одновременно амплитудную и фазовую модуляции. При этом амплитуда сигнала цветности определяет насыщенность, а фаза — цветовой тон передаваемого изображения. Для восстановления в телевизоре подавленной поднесущей цветности, как и в системе NTSC, на задней площадке строчного гасящего импульса передается вспышка поднесущей, состоящая из десяти периодов цветовой поднесущей. В отличие от NTSC фаза вспышки равна +45 градусов и — 45 градусов относительно отрицательного направления оси R-Y в четной и нечетной строках соответственно. По фазе вспышки в телевизоре определяется знак составляющей Uv. Рассмотрим упрощенную структурную схему одного из вариантов декодера PAL (рис.25).

Полный цветовой телевизионный сигнал поступает на полосовой фильтр ПФ, настроенный на полосу частот, которую занимает сигнал цветности в спектре видеосигнала. Выделенный полосовым фильтром сигнал цветности поступает на вход ультразвуковой линии задержки УЛЗ на время одной строки (64 мкс), на электронный ключ К, выделяющий сигнал цветовой синхронизации (вспышку), и на устройство сложения (+) и вычитания (-). В результате сложения прямого сигнала U0 с задержанным подавляются составляющие Uv и выделяются удвоенные составляющие Uu с постоянным знаком. При вычитании задержанного сигнала из прямого подавляются составляющие Uu и выделяются удвоенные составляющие Uv. Знак Uu чередуется от строки к строке. На рис.26 показаны векторограммы, поясняющие принцип разделения сигналов цветности PAL. Для получения из компонент Uv и Uu цветоразностных сигналов необходимо их продетектировать. Применяется синхронное детектирование. Для его работы нужно иметь опорный сигнал, частота и фаза которого равны сигналу подавленной цветовой поднесущей. Сигнал формируется из вспышки, которая выделяется с помощью электронного ключа К из ПЦТС. Вспышка подается на генератор, выполненный по системе фазовой автоматической подстройки частоты ФАПЧ (рис.27).

Система ФАПЧ состоит из генератора, управляемого напряжением ГУН, фазового детектора ФД и фильтра нижних частот ФНЧ. Напряжендетектора, на другой вход — сигнал вспышки. Если частота ГУН близка частоте вспышки, то происходит захват ГУН по частоте и фазе. В установившемся режиме опорный сигнал на выходе ГУН равен частоте вспышки, т. е. частоте цветовой поднесущей, а его фаза совпадает с осью R-Y и равна 90°. Для повышения стабильности работы ФАПЧ а также его помехозащищенности частоту ГУН стабилизируют кварцем. Разделенные сигналы цветности поступают на входы синхронных детекторов СД. Для правильного детектирования необходимо обеспечить совпадение фаз опорного сигнала с сигналами цветности. Для этого на СД сигнала цветности (В-Y) опорный сигнал необходимо подавать через фазовращатель на 90 градусов, на СД сигнала цветности (R-Y) опорный сигнал подают на один из входов электронного коммутатора ЭК непосредственно, а на другой — через фазоинвертор на 180 градусов. ЭК переключается с помощью сигнала полустрочной частоты fстр/2. Фаза работы ЭК засинхронизирована с помощью блока цветовой синхронизации (на рис.25 не показан). Если во входном сигнале есть фазовые искажения, то при сложении (вычитании) прямого и задержанного сигналов во время их разделения эти искажения компенсируются. Система PAL обладает рядом достоинств:

Илон Маск рекомендует:  Работа со строками

· Отсутствует помеха от поднесущей на неокрашенных участках изображения, так как поднесущая не передается.

· Фазовые искажения отсутствуют и поэтому не вызывают нарушений цветового тона.

· Малая чувствительность к «асимметрии» полосы пропускания канала цветности.

· При разделении сигналов цветности выделяется удвоенная амплитуда составляющих Uv и Uu , что повышает отношение сигнал/шум.

· Уменьшаются «перекрестные» искажения, возникающие между сигналами яркости и цветности (определяется оптимальным выбором частоты поднесущей).

Недостатком системы PAL является понижение четкости изображения из-за усреднения сигнала цветности в двух последующих строках.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Как то на паре, один преподаватель сказал, когда лекция заканчивалась — это был конец пары: «Что-то тут концом пахнет». 8378 — | 8008 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

DelphiSite

Наиболее читаемое

UUE кодирование

Автор: Sergei Dubarev
Для того, чтобы ОНО заработало, необходимо создать проект в составе:
Форма (form) — 1 шт.
Поле ввода (edit) — 2 шт., используются события OnDblClick.
Кнопка (button) — 1 шт., используется событие OnClick.
Диалог открытия файла (Open Dialog) — 1 шт.
Диалог сохранения файла (Save Dialog) — 1 шт.
Имена файлов будут вводится либо вручную, либо из диалога (double-click на поле ввода edit), причем в edit1.text должно лежать имя входного файла, в edit2.text — выходного. По нажатии кнопки пойдет процесс, который завершится сообщением «DONE.»
Всего хорошего.
P. S. Функция toanysys обнаружена в книге «Для чего нужны и как работают персональные ЭВМ» от 1990 г. Там она присутствует в виде программы на BASIC’e.
P.P.S. Для стимулирования фантазии читателей «Советов. » высылаю так же мессагу из эхи, на основе которой я сваял свое чудо.
Файл Unit1.pas

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

TForm1 = class ( TForm )

procedure Edit1DblClick ( Sender: TObject ) ;

procedure Edit2DblClick ( Sender: TObject ) ;

procedure Button1Click ( Sender: TObject ) ;

ssz = ( High ( Cardinal ) — $F ) div sizeof ( byte ) ;

//эта константа используется при выделении памяти

p: string = ‘0123456789ABCDEF’ ;

//эта константа используется функцией toanysys

//выбор входного файла

procedure TForm1. Edit1DblClick ( Sender: TObject ) ;


if opendialog1. execute then

edit1. text := opendialog1. filename ;

//выбор выходного (UUE) файла

procedure TForm1. Edit2DblClick ( Sender: TObject ) ;

if savedialog1. execute then

edit2. text := savedialog1. filename ;

function m >( s: string ; fromc, toc: byte ) : string ;

for i := fromc to toc do

//перевод числа (a) из десятичной системы в другую

function toanysys ( a, r: byte ) : string ;

//добавляет незначащие нули

for i := 1 to 8 — length ( s ) do

//перевод 6-разрядного числа из двоичной системы в десятичную

//двоичное число подставляется в виде строки символов

function frombin ( s: string ) : byte ;

for i := 1 to 6 do

if s [ i ] = ‘1’ then

tcoola = array [ 1 .. 1 ] of byte ;

procedure TForm1. Button1Click ( Sender: TObject ) ;

inf: file of byte ;

b: array [ 1 .. 4 ] of byte ;

assignfile ( inf, edit1. text ) ; //входной файл

szf := filesize ( inf ) ; //

szh := ( szf * 8 ) div 6 ; //

if szf * 8 — szh * 6 = 0 then

getmem ( uue, szh + szl ) ; //выделение памяти

while not ( eof ( inf ) ) do

//чтение должно быть сделано посложнее,

//дабы избежать «read beyond end of file»

read ( inf, b [ 1 ] , b [ 2 ] , b [ 3 ] ) ;

//читаем 3 байта из входного файла

//и формируем «двоичную» строку

bin := toanysys ( b [ 1 ] , 2 ) +

toanysys ( b [ 2 ] , 2 ) +

toanysys ( b [ 3 ] , 2 ) ;

//разбиваем строку на куски по 6 бит и добавляем 32

t := m >( bin, 19 , 24 ) ;

b [ 4 ] := frombin ( t ) + 32 ;

t := m >( bin, 13 , 18 ) ;


b [ 3 ] := frombin ( t ) + 32 ;

t := m >( bin, 07 , 12 ) ;

b [ 2 ] := frombin ( t ) + 32 ;

t := m >( bin, 01 , 06 ) ;

b [ 1 ] := frombin ( t ) + 32 ;

//запихиваем полученнные байты во временный массив

uue [ oum ] := b [ 1 ] ;

uue [ oum ] := b [ 2 ] ;

uue [ oum ] := b [ 3 ] ;

uue [ oum ] := b [ 4 ] ;

//входной файл больше не нужен — закрываем его

//формируем выходной файл

assignfile ( ouf, edit2. text ) ; //выходной файл

sxh := ( szh + szl ) div 60 ; //число строк в UUE файле

sxl := ( szh + szl ) — sxh * 60 ;

writeln ( ouf, ‘begin 644 ‘ + extractfilename ( edit1. text ) ) ;

//записываем строки в файл

for i := 1 to sxh do

// ‘M’ значит, что в строке 60 символов

for j := 1 to 60 do

write ( ouf, chr ( uue [ oum ] ) ) ;

//записываем последнюю строку, которая

//обычно короче 60 символов

sxh := ( sxl * 6 ) div 8 ;

write ( ouf, chr ( sxh + 32 ) ) ;

for i := 1 to sxl do

write ( ouf, chr ( uue [ oum ] ) ) ;

// «добиваем» строку незначащими символами

for i := sxl + 1 to 60 do

//записываем последние строки файла

writeln ( ouf, ‘end’ ) ;

freemem ( uue, szh + szl ) ; //освобождаем память

showmessage ( ‘DONE.’ ) ; //Готово. Забирайте!

1) Читаем из исходного хфайла 3 байта.
2) Разбиваем полyченные 24 бита (8×3=24) на 4 части, т.е. по 6 бит.
3) Добавляем к каждой части число 32 (десятичн.)
Пpимеp: Имеем тpи числа 234 12 76. Побитово бyдет так —
11101010 00001100 01001100 pазбиваем и полyчаем —
111010 100000 110001 001100 добавляем 32 —
+100000 +100000 +100000 +100000
—— —— —— ——
1011010 1000000 1010001 101100 или в бyквах —
Z @ Q ,
Вот собственно и все. В UUE файле в пеpвой позиции стоит кол-во закодиpованных
символов + 32. Т.е. вся стpока содеpжит 61 символ. 1 символ идет на кол-во.
Остается 60 символов _кода_. Если подсчитать, то мы yвидим, что для полyчения
60
символов кода необходимо 45 исходных символов. Для полной стpоки в начале стоит
бyква «M», а ее ASCII код = 77. 45+32=77.

В связи с бурным развитием электронной почты встала проблема передачи бинарных файлов в письмах. Существующая технология не позволяет передавать такие файлы напрямую т.к. в них содержатся символы с кодами менее 32 и более 127 которые воспринимаются программным обеспечением как управляющие.
Для решения этой проблемы был разработан метод UU(E)-кодирования. Суть метода заключается в pазбиении тpех восьмибитовых слов (24 бита) на четыpе шестибитовых, добавляя к каждому слову число 32 (код пpобела), чтобы получить возможность пеpедать это в обычном письме электpонной почты. Таким обpазом, шестибитное слово пpеобpазуется к набоpу
`!»#$%&'()*+,-./012356789:; ?@ABC. XYZ[\]^_,
доступному для пеpедачи.
Во избежании потеpь, пpобелы не используются в выходном UU-коде, а заменяются на символ с кодом 96 — обpатная кавычка.
Перевод текста в UUE:
Исходный текст : M o d
Hомера по ASCII: 77 111 100
По словам(8bit): 01001101 01101111 01100100
По словам(6bit): 010011 010110 111101 100100
Hомера по ASCII: 19 22 61 36
Прибавляем код пробела (32 по ASCII)
Hомера по ASCII: 51 54 93 68
Текст UUE : 3 6 ] D
Итог : Mod > 36]D
Дpугой, менее популяpный метод, называется XX-кодиpованием, и отличается от UU только набоpом символов — здесь используются: +-01..89ABC. XYZabc. xyz. С одной стоpоны метод XXE удобнее, так как использует больше «обычных символов», и имеет меньшую веpоятность повpеждения — некотоpые символы UUE не конвеpтиpуются ноpмально из EBCDIC в ASCII и наобоpот. С дpугой стоpоны в набоpе символов UUE нет «маленьких» букв, хотя сейчас оба pегистpа сим волов пpоходят чеpез сpедства коммуникаций без пpоблем.
В общем случае готовый UUE файл выглядит так:
[ section a of b of file filename.ext ]
[ filetime xxxxxxxx ]
[ begin 644 filename.ext ]
[ UUE-код ]
[ end ]
[ CRC областей ]
Hеобязательные параметры заключены в квадратные скобки.
Рассмотрим назначение этих параметров подробнее.
Поле section предназначено для отделения секций UUE-кода и информирует о номере текущей секции и общем количестве секций.
Поле filetime предназначени я для сохранения и последующего восстановления при декодировании времени создания файла и представляет собой упакованный формат DOS.
Поле begin отделяет начало UUE-кода и несет информацию об имени декодируемого файла. Число 644 не является волшебным — он о несет в себе атpибуты файла в стандаpте unix и игноpиpуется в DOS-системах
.
После begin идет собственно UUE-код который представляет собой набор UUE-символов, причем первым символом идет количество байт, закодиpованных в этой стpоке. Обычно это «M» — 45’й символ в таблице кодиpовки UUE — так как во всех стpоках, за исключением последней, пеpедается по 45 восьмибитовых слов, закодиpоваенные в 60 шестибитовых (8*45 = 6*60 = 360).
Конец UUE-кода обозначается директивой end.
Область CRC содержит конрольные суммы секций и файла в целом.
Как вычисляется CRC.
Размеp CRC — 16 бит. Для каждого последующего байта с точки зpения языка Ассемблеpа она вычисляется так:
ror [word ptr ChkSum],1
movzx ax,[byte ptr CurrentByte]
add [word ptr ChkSum],ax
Пеpед началом подсчета [ChkSum] должен быть pавен нулю. По окончании подсчета контpольная сумма UUE и pавна [ChkSum]. Таким образом видно, что ChkSum файла любой длины, состоящего из одних нулей будет нуль.
Далее следует небольшой пpимеp на языке Pascal, вычисляющий контpольную сумму of ‘entire input file’.

BufSize = 16 * 1024 ;

Buf : Array [ 1 .. BufSize ] of Byte ;

Procedure CalcChkSum ( Var Buf;Size: Word ;Var PrevSum: Word ) ;Assembler;


BMW 1 series 118d › Бортжурнал › №13 Кодирование с помощью NCS Expert полезных и не очень функций

Желаю здравствовать!
NCS Expert Tool — программа из набора BMW Standart Tools, предназначенная для кодирования ЭБУ (электронных блоков управления), входящая в состав EDIABAS (Электронная диагностическая базовая система).
Научиться пользоваться ей не сложно. Нужен лишь шнурок к авто, компьютер и время. Куча описаний и видео находится в сети по настройке программы перед кодированием, да и описаний самого кодирования предостаточно, так что останавливаться на этом не буду. По этим вопросам можно заглянуть например вот по этим ссылкам: Раз и Два.
Здесь — пошаговая инструкция по кодированию BMW, при помощи NCS Expert и NCS Dummy.
Ещё будьте внимательны с версиями этой программы, поскольку настройка профиля в версии 3.0.1 немного отличается от настройки профиля в версии 4.0.1. Это касается в частности процедуры кодирования ЭБУ. Если у вас при попытке кодирования ЭБУ вылетает ошибка, то проверьте настройки профиля: В редакторе профиля нажимаем на FSW/PSW и место считывания выбираем «из CVT«, а не «из файла ___» — это для версии NCS EXPERT 4.0.1.

Сначала хочу привести расшифровку всех присутствующих у меня ЭБУ.
1RAD — Магнитола BMW Business CD
4DMOT (DDE) — Цифровая электронная система управления дизельным двигателем
ABG — Система подушек безопасности Airbag
CAS — Система доступа в автомобиль
DSC — Система динамического контроля стабильности
EKP — Регулируемый топливный насос
FRM — Модуль в пространстве для ног
FZD — Функциональный центр в крыше
IHK — Встроенная автоматическая система отопления и кондиционирования
JBBF — Электронный блок управления JBE
KOMBI — Комбинация приборов
PDC — Сигнализация при парковке

Далее приведу примеры закодированных мною функций на моём авто. Некоторые из этих функций у меня уже были прописаны. Может старый хозяин заморочился, может завод так установил, но не суть.

-ДХО (вывод пункта меню на приборку в БК): TAG_LICHT_AN и TAG_LICHT_AUS, оба в aktiv \\В моём блоке FRM ДХО можно сделать только дальний в пол- или треть- накала. Ангельские глазки не возможно сделать в качестве ДХО, необходимо менять ЭБУ на FRM2 или FRM3, что возможно будет проделано в будущем

-Текущая скорость в БК (электронный спидометр): BC_DIGITAL_V в aktiv \\у меня это уже присутствовало

-Моментальный расход топлива на приборке в цифровом виде: DIGITAL_KVA в activ \\у меня это уже присутствовало

-Добавить пустое поле в БК: BC_LEERZEILE в aktiv \\у меня это уже присутствовало

-Комфортное закрытие (Складывание зеркал при постановке на охрану и автоматическое раскладывание при снятии): SPIEGEL_KOMFORT_EINKLAPP в activ \\у меня это уже присутствовало

-Альтернативный режим работы аварийки (по два быстрых моргания — американский стиль): DOPPELBLINKIMPULS_WARNBLK в aktiv \\себе не кодировал, но функция интересная

-Мигание туманок при мигании дальним (туманки отключаются в момент мигания дальним): LH_UND_NSW_NICHT_GLEICHZ в aktiv

-Отключение гонга, когда дверь водителя открыта, а ключ находится в слоте: CC_ZUENDSCHLUESSEL в nicht_aktiv

-Открытие\закрытие окон одним нажатием: (водительское) FH_FAHRERTUER_TIPP_AUF \ FH_FAHRERTUER_TIPP_ZU оба в aktiv (пассажирское) FH_BEIFAHRERTUER_TIPP_AUF \ H_BEIFAHRERTUER_TIPP_ZU оба в aktiv \\у меня это уже присутствовало

-Отключение включения кондиционера при нажатии кнопки Auto: C_CKM_D_KLIMA_MIT_AUTO, KLIMA_MIT_AUTO_0, KLIMA_MIT_AUTO_1, KLIMA_MIT_AUTO_10/15, KLIMA_MIT_AUTO_2 все в nicht_aktiv

-Включить надпись AUTO (на экранчике климата) в автоматическом режиме климата: GEBLAESE_AUTO_MIT_A в aktiv

-Сигнализация сработает если машина была закрыта кнопкой, а дверь открыть ключом: SCHAERFEN/ENTSCHAERFEN заменить schloss_und_fernbedienung на nur_mit_fernbedienung

-Комфортный выход (ключ отстреливается при долгом нажатии на кнопку stop): KOMFORT_EJECT в aktiv

-Прописывание ёмкости АКБ: KLASSE_BATTERIE ?ah \\себе не кодировал, но думаю пригодится

-Завершение дворниками цикла очистки до конца при выключении мотора: ZYCLUS_VOLLEND_KLR_AUS в aktiv \\у меня почемуто нет такого параметра, возможно нужен поновее ЭБУ, но функция полезная

-Отключение омывателя фар: SCHEINWERFERREINIGUNG или SCHEINWERFERREININUNG в nicht_aktiv \\себе не кодировал

-Новый режим работы омывателей фар (три более коротких импульса вместо двух): ANZAHL_SPRITZIMPULSE->wert_03 (3 спрей-импульса), DAUER_SPRITZIMPULSE->500_ms (продолжительно спрей импульса), PAUSE_SPRITZIMPULSE->1000_ms (пауза между импульсами) \\себе не кодировал

Илон Маск рекомендует:  Преобразование негатива в позитив

-Отключение ГОНГА ремней безопасности (индикатор на приборке всё равно горит): SBR_BEIFAHRER_1 и SBR_FAHRER_1 оба в nicht_aktiv \\как утверждает u36a — это именно грамотное отключение гонга, т.к. подушки при этом работают

-Включение AUX на BMW Business CD (если нет, а точнее пропала после сброса клеммы АКБ например): Прошиваем пустым .MAN-файлом

А вообще достаточно полезно посмотреть видео по кодированию от Паши u36a на Yutube. Крайне полезно и доходчиво для тех, кому интересно кодирование и диагностика BMW.
Уже насобирал небольшую базу кодировочных параметров различных блоков на просторах драйва и БМВ-форумов, как-нибудь позже выложу. Поскольку «копейка» достаточно ограничена в комплектации, то применить к своей машине можно только малую часть этих параметров.
Так же есть вопрос к знающим людям по NCS Expert: При попытке открыть Car Key Memory выдаёт ошибку. Причём пробовал различные профили, и сам создавал, и скачивал — результат один. На одном из форумов для е70 вычитал, что просто ключ не имеет памяти, поэтому такая ошибка. А все параметры, которые хранятся в CKM, можно найти в ЭБУ. Так ли это? Или есть другой вариант? Может опять-таки с версией программы что-то нужно настроить по-другому?

Кодирование BMW в NCS Expert на примере X3 E83 2005

Все что вы делаете, вы делаете на свой страх и риск! Вы и только вы несете ответственность за свои действия. Все, что я пишу, – это мое личное мнение.

В интернете уже есть много информации по этому поводу. Но везде возникали проблемы и собирать информацию приходилось из 5-10 источников. Я хочу описать все в одном месте и дополнить описанием «подводных камней».

В двух крупных ТЦ мне отказали в активации опции. Цена за активацию порядка 3000р, если еще и сконфигурировать, то за каждое хочу 500р. Это при том что есть официальная инструкция с указанием необходимого ПО, сканера и описанием куда кликнуть мышкой. Было принято решение сделать самому, был приобретен провод и ПО. Полистав интернет я для себя понял что в случае неудачи, выход ЭБУ из строя маловероятен и перепрошивкой все можно поправить. Это только мое мнение!

Выбор большой, есть много разных проводов и ПО. От 300р на до бесконечности. Что выбрать ?

EML — Выводит показания Большого числа датчиков и способен сбросить ошибки. Цена копейки, в дороге пригодится.

BMW scanner — удобный и понятный интерфейс, выводит пробеги с разных блоков, все кодирование сводится к проставлению галочек. По в комплекте. Цены, в зависимости от версий, от 1500р на Ebay.

BMW INPA K+DCAN OBD (USB) — может все, работает с дилерским ПО. По в комплекте. Цены от 2000р на Ebay

1. ELM327 WiFi. Самый бюджетный вариант. Если достаточно читать двигатель и то не весь, только по OBDII — то достаточно ELM327. Знаю около десятка варианта исполнения адаптера. Самый удачный в маленьком корпусе с кнопкой отключения питания — высота его около 2 см из диагностическог разъема.

1а. iOBD2 от XTools (важно не спутать с подделкой на него — iOBD). Чуть дороже варианта 1. Функционал похож, но качество исполнения устойств лучше и есть родная бесплатная руссифицированная очень хорошая программа под него в AppStore iOBD2.

2. iOBD2 BMW от XTools. Внешне адаптер аналогичен варианту 1а, по функионалу он же + диагностика по заводским протоколам других систем BMW. Статистики по нему мало. Продукт очень свежий, но интересный. По сути активировать его стало можно только с августа. Сегодня проверял на е39 — большинство систем взял, читает и сбрасывает ошибки, показывает реальные данные по авто.

3. iDiag от Launch (есть вариант как для IOS, так и для Android). Сканирует все системы. Нет рюшечек в виде красивых цветных шкал и прочего, но как диагностический прибор самый серьезный из рассмотренных. Поскольку выпускается известным и крупным производителем диагностического оборудования и по сути аналог Launch X431 Diagun или Master для простых пользвателей. Выходят постоянные обновления, есть русский язык. Как дополнительный бонус можно AppStore купить софт для нескольких марок автомобилей (например если в семье есть BMW Mersedes и Rover, то можно купить ПО для этих трех марок).

Все эти адаптеры имеют право на жизнь — это зависит что хочет получить человек от девайса и сколько денег на это он считает приемлимым потратить.

Зачем нам просто и быстро ? Нужно много и интересно ). Выбор пал на BMW INPA K+DCAN OBD (USB).


Почитав описание в интернете, понял что качество разное. Заказ из Китая отпал, хотелось в случае проблем изливать свои проблемы в конкретные уши. Как устанавливать кучу хитрого ПО непонятно, необходим человек который просветит тебя на этом пути и он должен быть продавцом. Выбор пал на интернет-магазины с гарантией, инструкциями в комплекте и отзывами в которых магазин оказал помощь нуждающимся.

Берем ноут и начинам ставить все по инструкциям. На удивление все соответствовало инструкции и закончилось без проблем. Идем к машине и тут начинаются залежи «подводных камней.»

ПО видит кабель, но не видит машину. Проверил описание товара в магазине. Все верно, нужный кузов имеется.

Почитав интернет, понял что разъем надо дорабатывать. Описание было туманным. Рисковать не стал. Звонок в службу спасения интернет-магазина. Описание симптомов и диагноз получен. Нужно было замкнуть 7-8 контакты. Информация в интернете подтвердилась и стало немного спокойней. Продавец не уточнил год машины и продал стандартный провод. Для подключения X3 от 2007 года, замыкать ничего не надо. Мне было предложено приехать и поменять провод. «Универсальность!», — подумал я и сделал все сам, не разбирая разъема.

Замыкать в машине мне показалось неправильным и я замкнул штырьки на проводе. Отмерил расстояние между штырьками, нашел похожий предмет и сделал, вокруг него, медное колечко из тонкой жилки толстого многожильного провода. Колечек пришлось сделать несколько, что бы они с маленьким натягом наделись на 2 штырька.

Ура! все работает.

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

Необходимо правильно настроить профиля.

Там же есть готовые профиля. Но профиль MANUAL надо отредактировать. В профиле поставить брать данные из CVT, а не из файла. Иначе будет ругаться при записи данных. В каталоге .NCSEXPER\WORK должен быть файл FSW_PSW.MAN иначе при нажатии F6 программа будет ругаться на этот файл. Для этого создадим пустой файл TXT и переименуем в FSW_PSW.MAN.

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

В ЭБУ есть конфигурация которую считывает NCS Expert и записывает в файл FSW_PSW.TRC Он открывается блокнотом и представляет собой список параметров и значением вкл\выкл (На немецком языке).

Количество параметров зависит от кода FA. Код FA это закодированная комплектация автомобиля содержащий всю информацию о том, что в машине есть. FA находится в приборке AKMB и блоке света ALSZ. Это файлик со строчкой, в которой указаны все номера опций, разделенные символом «$». С помощью FA можно закодировать ЭБУ или все блоки с настройками по умолчанию для вашего списка опций. Для этого вы должны выполнит процесс кодирования с пустым файликом FSW_PSW.MAN

Прежде чем кодировать, сохраните исходники.

Ниже описан общий процесс кодирования для любого блока. В примере мы получаем данные из блоков, переименовываем и сохраняем в надежном месте. После чего правим конфигурацию и записываем обратно в ЭБУ.

1. Запускаем NCS

2. Выбираем профиль мануал

3. Нажимаем F1 потом F3 в открывшемся окне выбираем кузов и нажимаем ОК

в открывшемся окне выбираем от куда будем считывать FA нажимаем ОК

у машин с FA он находится в приборке AKMB и блоке света ALSZ

4. Нажимаем F6 Назад

5. нажимаем кнопку F4 «Выбор ЭБУ». Появится список доступных для кодирования ЭБУ

(необходимо считать данные из главного блока GM5 и тех блоков которые вы собираетесь кодировать.)

6. выбираем блок GM5 в списке и нажимаем ОК.

7. видим что для кодирования выбран GM5, Дальше 2 пути можно просто нажать кнопку F4 «Читать ЭБУ», либо 8. нажать F5 «Базовые функции» и в списке выбрать coapiReadSgGetFswPsw. После чего в папке .NCSEXPER\WORK создается файлик FSW_PSW.TRC, копируем в другую папку для сохранности и переименовываем FSW_PSW_GM5.TRC. Вы сможете дома, не спеша, посмотреть настройки, и подготовить файлы для записи в блок.

9. нажимаем кнопку F4 «Выбор ЭБУ». и повторяем операцию чтения для других блоков, которые собираемся кодировать. После чего в папке .NCSEXPER\WORK создается файлик FSW_PSW.TRC с данными из нового блока, копируем и переименовываем.

10. В папке .NCSEXPER\WORK блокнотом открываем файлик FSW_PSW.TRC ищем нужный нам параметр, меняем его значение и сохраняем файл с расширением .MAN (FSW_PSW.MAN)

11. Возращаемся в NCS и проверяем что JOBNAME =SG_CODIEREN, если нет, то меняем через кнопку F2 «Смена операции» нажимаем кнопку F3 «Кодировать ЭБУ». Начнется процесс кодирования ЭБУ. Если все прошло успешно появится надпись «Кодирование ОК».

Все кодирование закончено.

В ключах и в машине, есть память. На каждый ключ можно закодировать различные функции. Настройки зеркал и сидений, работу ЦЗ и т.д. Логично предположить что данные настройки будут преобладать. Поэтому я рекомендую начать кодировать с этого места, если нужный параметров вы не найдете, тогда искать их в соответствующих блоках. Еще 1 большой плюс, что тут указываются возможные варианты значений и какой вариант используется по умолчанию. Это очень удобно.

Кодирование Память ключа и машины:

На прилагаемом диске, в инструкциях есть файл CARKEYMEMORY.pdf с описанием параметров на большое количество кузовов.

1. Загружаем наш профиль CAR KEY MEMORY( «File»-«Load Profil»)

2. Считываем данные на машину. Для этого нажимаем кнопку F1 «VIN/ZCS/FA»

3. Нажимаем кнопку F3 «ZCS/FA из ЭБУ» . Выбираем кузов

и откуда считываем кодировочные данные, выбираем EWS

4. нажимаем кнопку F6 «Назад»

5. появилась кнопка F5 «CKM», нажимаем

попадем в меню памяти авто и ключей, видим список ключей, доступные функции и параметры

6. нажимаем кнопку F1 «Считать», в параметрах появляется символ I, он указывает на активный параметр. Символ S указывает на параметр установленый на заводе по умолчанию. Посмотрим на примере опции плавного затухания света в салоне. Активный параметр стоит в aktiv и по умолчанию в том же положении.


7. Если хотим отключить плавное затухание, выбираем nicht_aktiv и нажимаем F2 «Изменить». И для сохранения изменений F4 «Передать».

Нижу будут только параметры и значения. Вам нужно прочитать нужный блок, изменить параметры в файле FSW_PSW.TRC, переименовать его в FSW_PSW.MAN и записать обратно в бок.

По инструкции сохраняем файлики с исходной конфигурацией для блоков AKMB и ALSZ

Выбираем профиль мануал

Нажимаем F1 потом F3 в открывшемся окне выбираем кузов и нажимаем ОК

в открывшемся окне выбираем от куда будем считывать FA нажимаем ОК

у машин с FA он находится в приборке AKMB и блоке света ALSZ

шифр считался нажимаем F2

В окне ввода VIN нажимаем ОК

Появляется окно ввода опций.

В этом окне видим список, уже существующих опций в авто.

1. Для добавления новой опции вписываем ее в верхней строке так $861

2. Нажимаем кнопку Add

3. Опция добавляется к общему списку.

Для удаления опций выбираем ее и нажимаем кнопку Del на клавиатуре.

Нажимаем F6 Назад

Нажимаем F4 выбираем ЭБУ блока света в который записываем FA

Нажимаем F2 Смена операции. Выбираем FA_WRITE(записать FA) нажимаем ОК

Нажимаем F3 запись FA в ЭБУ.

Нажимаем F1 выбираем блок приборки АКМВ и повторяем операцию записи FA для ЭБУ приборки.

после изменения FA вы можете кодирнуть всю машину и программа выставит нужные значения параметров в соответствии с добавленной опцией в FA

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

Программное отключение мата присутствия пассажира.

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

ОС3_1 -мат присутсвтия(америка)

OC3_2 -мат присутсвтия(америка)

SBE1_1 -мат присутсвтия

SBE1_2 -мат присутсвтия

ERKENNUNG_SITZBELEGUNG_1 Проверка мата присутствия

ERKENNUNG_SITZBELEGUNG_2 Проверка мата присутствия

Сообщение о не пристегнутом ремне безопасности.

Блок приборки AKMB

mit_gurtschlosskontakt данные из замка ремня (Светится на приборки беременный мужик)

ohne_gurtschlosskontakt определяет без замка руля (не будет светится)

AKUSTIK_GURT_WARN Звуковое предупреждение

Комфортное это закрывание всех стекол и люка.

KOMFORTOEFFNUNG -комфортное открывание

Илон Маск рекомендует:  Sqlсоздание и уничтожение базовых таблиц

KOMFORTOEFFNUNG_FB -дистанционное комфортное открывание при удержании кнопки ЦЗ на ключе


KOMFORTSCHLIESSUNG -комфортное закрывание

KOMFORTSCHLIESSUNG_FB -комфортное закрывание при удержании кнопки ЦЗ ключа

BEIKLAPP_B_KOMFORTSCHL_GM Складывание зеркал с пульта

BEIKLAPPEN_GM Складывание зеркал с ключа

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

VERRIEGELN_AUT_AB_X_KMH — автоматическое запирание ЦЗ после Х км/ч

VERRIEGELN_AUT_MACH_2_MIN -автомаическое запирание после 2 минут. Если дверь не открылась.

VERRIEGELUNGSSCHWELLE -запирание ЦЗ на скорости(параметр Х)

VERRIEGELN_XKMH_SENDER_1 Цифра — номер ключа, активирует показания скорости для ЦЗ после Х км/ч

HECKKLAPPE_ENTSICHERN -открытие багажника дистанционно

ZUENDSCHLUESSEL_WARNUNG — включение гонга и текста на приборке если при выключенном зажигании и открытой двери ключ зажигания оставлен в замке

ZV_SELEKTIV — избирательное открытие ЦЗ, при открывании центрального замка открывается только водительская дверь

ENTSICHERN_CENTERLOCK — кнопка ЦЗ работает, когда двери заперты и ключ не в зажигании.

Также можно закодировать звуковое и визуальное подтверждения закрытия ЦЗ. Кодируется в памяти ключа и машины и в инструкции Активация штатной сигнализации.

Перевод единиц измерения из usa в европейские.

В CARKEYMEMORY — Кодирование Память ключа и машины

Возможные значения параметров будут указаны, вам нужно только выбрать.

ZEIT_EINHEIT -формат времени 12 или 24 часа

NRZI кодирование

PHP: Функции

NRZI код (Non Return to Zero Invertive) — один из способов линейного кодирования. Обладает двумя уровнями сигнала и используется для передачи битовых последовательностей, содержащих только 0 и 1. NRZI применяется, например, в оптических кабелях, где устойчиво распознаются только два состояния сигнала — свет и темнота.

Принцип кодирования

При передаче логического нуля на вход кодирующего устройства передается потенциал, установленный на предыдущем такте (то есть состояние потенциала не меняется), а при передаче логической единицы потенциал инвертируется на противоположный.

src/Nrzi.php

Реализуйте функцию decode , которая принимает cтроку в виде графического представления линейного сигнала и возвращает строку с бинарным кодом.

Примеры использования:

Подсказки

Символ | в строке указывает на переключение сигнала и означает, что уровень сигнала в следующем такте, будет изменён на противоположный по сравнению с предыдущим.

К сожалению, str_split умеет работать только с ASCII символами, поэтому для разделения строки на символы используйте конструкцию preg_split(«//u», $str, -1, PREG_SPLIT_NO_EMPTY); , где $str — строка.

UUE кодирование файлов

С момента одного из моих постов, несколько человек попросили показать пример утилитки (или исходника на Icon), так вот сейчас по заявкам граждан я покажу свою утилитку для кодирования файлов в UUE.

Зачем нужно такое кодирование ?

Ну, я — фидошник, и иногда мне приходиться отсылать файлы с помощью Фидонета, а как известно, многие узлы не пропускают через себя письма со вложенными в них файлами, и поэтому была изобретена такая хитрость: файл кодируется с помощью UUE-кодера и результат кодирования вставляется прямо в письмо. Здесь фишка в том, что результат UUE-кодирования состоит только из печатных символов, а именно это и необходимо для вставки файла в письмо.

В общем, написание программы кодирования в UUE-формат стало одним из первых моих серьезных экспериментов (поэтому собственно прошу программистов не пинать сильно) — и наглядно показало мне возможности Icon.

Ну, а теперь, по просьбам трудящихся, я вставляю сюда код утилитки:

Сохраняем все это в файл uue.icn (*.icn — расширение файлов с исходными кодами программ на Icon) и, по возможности, правим (лучше всего в jEdit, т.к как у него есть подсветка синтаксиса Icon) и затем запускаем на выполнение:

icont uue.icn -x входной_файл [выходной файл]

(в квадратных скобках я указал необязательный параметр, т.е если путь к выходному файлу задан не будет, то в текущей директории после работы программы появится файла вида год_месяц_число.uue)


Пример вывода программы (UUE):

Вот собственно и все :)

UPD: К сожалению, я больше уже не фидошник :(

Про кодировки и Юникод

Вначале стоит разъяснить пару терминов. Кодовая страница — таблица заранее известного размера, каждой позиции (или коду) которой сопоставлен единственный символ или его отсутствие. Например, кодовая страница размерностью 256, где 71-й позиции соответствует буква «G». Кодировка — правило кодирования символа в числовое представление. Любая кодировка создается для определенной кодовой страницы. Для примера, символ «G» в кодировке Абрвал примет значение 71. Кстати, простейшие кодировки так и поступают — представляют символы их значениями в кодовых таблицах, ASCII тоже к таким относится.

Раньше для кодирования хватало всего 7 бит на символ. А что? достаточно для 128 различных знаков, вмещалось все необходимое тогдашним пользователям: английский алфавит, знаки препинания, цифры и некоторых спецсимволы. Основная англоязычная 7-битная кодировка с соответствующей ей кодовой страницей получили название ASCII (American Standard Code for Information Interchange), они же заложили основы на будущее. Позже, когда компьютеры распространились в неанглоговорящие страны, появилась нужда в национальных языках, здесь-то фундамент ASCII и пригодился. Компьютеры обрабатывают информацию на уровне байтов, а код ASCII занимает только 7 первых бит. Использование 8-го расширяло пространство до 256 мест без потери совместимости, а вместе с ней и поддержки английского языка, это было важно. На этом факте выстроено большинство неанглоязычных кодовых страниц и кодировок: нижние 128 позиций как у ASCII, а верхние 128 отведены для национальных нужд и кодировались со старшим битом. Однако, создание для каждого языка (иногда группы схожих языков) собственной страницы и кодировки привело к возникновению проблем с поддержкой такого хозяйства разработчиками операционных систем и программного обеспечения в целом.

Для выхода из ситуации организовали консорциум, разработавший и предложивший стандарт Юникода. В нем предполагалось объединить знаки всех языков мира в одной большой таблице. Кроме того, определялись кодировки. Сначала ребята посчитали, что 65 535 посадочных мест должно хватить всем, ввели UCS-2 — кодировку с фиксированной 16-битной длиной кодов. Но пришли азиаты с многотомными азбуками, и расчеты рухнули. Кодовую область увеличили вдвое, UCS-2 уже не смогла бы справиться, появилась 32-битная UCS-4. Ощутимыми преимуществами кодировок UCS являлись постоянная кратная двум длина кодов и простейший алгоритм кодирования, и то, и другое способствовало скорости обработки текса компьютером. Но при этом была и неоправданная, чересчур расточительная трата места: представьте, что в ASCII 00010101, то в UCS-2 00000000 00010101, а UCS-4 уже 00000000 00000000 00000000 00010101. С этим нужно было что-то делать.

Развитие Юникода повернуло в сторону кодировок с переменной длиной получаемых кодов. Представителями стали UTF-8, UTF-16 и UTF-32, последняя условно-досрочно, так как на данный момент она идентична UCS-4. Каждый символ в UTF-8 занимает от 8 до 32 бит, причем есть совместимость с ASCII. В UTF-16 16 или 32 бита, UTF-32 — 32 бита (если бы пространство Юникода расширили еще вдвое, то уже 32 или 64 бита), с ASCII эти две не дружат. Количество занимаемых байтов, зависит от позиции символа в таблице Юникода. Очевидно, наиболее практичная кодировка — UTF-8. Именно благодаря своей совместимости с ASCII, небольшой прожорливости до памяти и достаточно простым правилам кодирования, она является наиболее распространенной и перспективной кодировкой Юникода. Ну, а в завершение красивая схема преобразования кода символа в UTF-8:

NIT – методика кодирования от алкоголизма

О возникновении метода

NIT – методика кодирования от алкоголизма, основанная на медикаментозной инъекции и сопровождаемая психотерапевтическим внушением на основе системы страхов и запретов.

По сути, это аналог давно известной методики Торпедо, отличие лишь в используемых препаратах. Специалисты утверждают, что при кодировании с помощью NIT достигается сразу два эффекта:

  • — устранение тяги к алкоголю;
  • — длительная ремиссия с соблюдением установленного врачом срока трезвости.

Достоверно судить о правдивости подобных утверждений затруднительно, поскольку NIT не является лекарственным средством, и нет сведений о результатах клинических исследований, подтверждающих высокую эффективность данного способа у подавляющего большинства пациентов.

Описание метода

NIT – методика кодирования с помощью внутривенного введения препарата, обладающего высокими сенсибилизирующими свойствами по отношению к алкоголю.

В ходе процедуры врач заручается согласием больного, определяет срок кодирования (обычно, при первой процедуре не более полугода). Затем препарат вводится в вену. После этого проводится провокация небольшим количеством алкоголя: капают несколько капель спиртовой настойки или водки под язык, либо дают понюхать смоченную спиртом ватку.

Возникает бурная реакция: сильная головная боль, приливы жара, иногда нарушения зрения, рвота, затруднение дыхания. В тяжелых случаях может произойти остановка дыхания или судорожный приступ. По этой причине NIT рекомендуется вводить только в условиях стационара, где есть все возможности для немедленного оказания пациенту должного объема помощи.

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

Последствия

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

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

Использование NIT не приносит каких-либо негативных последствий если человек ведет трезвый образ жизни. Но при попытке выпить алкогольсодержащий напиток могут возникнуть тяжелые последствия для здоровья. Осознание этого и является сдерживающим моментом для закодированного человека.

Отзывы

Метод NIT, как и прочие методики из разряда Торпедо, вызывает множество противоречивых отзывов об эффективности. Наркологи считают, что NIT – эффективная химическая блокада. Пациенты и их родственники часто с этим не согласны.

В целом, можно отметить, что NIT дает наилучший результат у тех, кто искренне и горячо желает навсегда покончить с пристрастием к спиртному и готов прилагать для этого все усилия. Данная методика хороша как вспомогательная, поскольку позволяет на какой-то промежуток времени отказаться от алкоголя, что дает время на осмысление ситуации.

Увы, кодирование, как и любой метод, основанный на запретах и страхе, не в состоянии решить внутренние проблемы человека, толкающие его в алкогольную бездну. Поэтому сразу после кодировки NIT необходимо подключать к лечению психотерапевтические методы, например, метод Г.А. Шичко или аутогенную тренировку.

Противопоказания

Кодирование методикой NIT подразумевает медикаментозное вмешательство и психотерапевтическое воздействие. Это означает, что даже к такой простой, на первый взгляд, процедуре необходимо относиться с большой осторожностью.

Абсолютным противопоказаниям является отказ пациента от добровольного лечения и наличие алкогольного опьянения на момент кодировки. По некоторым сведениям, нецелесообразно прибегать к NIT пациентам с запущенными формами алкоголизма. Не рекомендуется также, использовать данный метод кодирования лицам после 60 лет.

URL кодирование и декодирование строк

Для тех кто не любит нудных объяснений :)

Введите строку в одно из полей и нажмите соответствующую кнопку

Строка в закодированном виде

Строка в нормальном виде

Для тех кто любит «во всем разобраться» ;)

Кодирование URL и просто двоичных данных в последовательность букв, цифр и некоторых специальных знаков латинского алфавита в интернете было связано с ограничением физических устройств на передачу только алфавитно-цифровых символов. В URL такое кодирование обычно применяется для передачи символов в формате Unicode (как правило UTF-8) в последовательность из двух байт, записанных в шестнадцатиричном представлении. Каждый байт предваряется знаком %. При таком кодировании строчка «корова» будет иметь вид: %D0%BA%D0%BE%D1%80%D0%BE%D0%B2%D0%B0 . То есть русской букве к будет соответствовать последовательность %D0%BA и.т.д. Такое кодирование является общепринятым для путей к файлам или папкам, входящим в URL.

Подмножесто символов, которые разрешены в URL немного шире чем алфавитно-цифровые символы, так, в URL можно использовать дефис и подчеркивание, но нельзя, например, использовать одинарные или двойные кавычки. Некоторые символы используют для разделения параметров в URL, и их кодирование в этом случае будет неправомочным. В зависимости от отношения к кодированию специальных символов в javascript различают функции encodeURI и decodeURI, которые могут работать с полным URL, и, функции encodeURIComponent / decodeURIComponent, применяемые для параметров, входящих в URL.

Вообще говоря, кодирование параметров может быть достаточно произвольным. Здесь разработчик может использовать любую схему кодировки, если состав ее символов будет коректно передаваться через сеть. Так, вместо строки кириллицы в utf-8 можно применить строку в кодировке Windows 1251. В этом случае слово «корова» будет выглядеть как %EA%EE%F0%EE%E2%E0. То есть, символу к будет соответствовать последовательность из двух букв со знаком процента перед ними — %EA. Закодировать в строки с процентами кириллицу из других кодировок можно в нашем HTML кодировщике. В принципе, допустимы также другие способы кодирования, например, escape/unescape функцию javascript. Слово «корова» в этом случае будет выглядеть как %u043A%u043E%u0440%u043E%u0432%u0430 .

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL