Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Конвертер 8 бит в 7 бит и наоборот


Автор: Mephisto 16.4.2005, 04:56
Люди, есть ли стандартные алгоритмы ковертирования 8 битной кодироки в 7 битную и наоборот. Уже мозги кипят. Может у кого есть идеи, или готовые примеры?

Автор: Петрович 16.4.2005, 08:02
Смотря какую 7-битную кодировку ты имееш в виду.
В некоторых случайх просто обнуляется старший бит. А в некоторых, используется преобразования 3-х байт в 4 (Base64,UUE,XXE,MIME,...)

Автор: Mephisto 5.5.2005, 00:53
Цитата
преобразования 3-х байт в 4

Именно!
Сорри, что долго не писал!

Автор: val 5.5.2005, 09:12
Немного преобразую задачу: найти способ округления 8-ми битных величин к 7-ми. Я бы начал с экспериментов над числами и их округления. Тут всё от специфики задачи зависит...

Автор: Akina 5.5.2005, 10:12
Цитата(Mephisto @ 16.4.2005, 05:56)
есть ли стандартные алгоритмы ковертирования 8 битной кодироки в 7 битную и наоборот.

нет

Автор: Петрович 9.5.2005, 22:30
Цитата(Akina @ 5.5.2005, 11:12)
Цитата
есть ли стандартные алгоритмы ковертирования 8 битной кодироки в 7 битную и наоборот.

нет

Я же писал. Есть. Например Base64,UUE,XXE,MIME.
Если интересно, реализацию можете посмотреть и/или использовать в Indy. Или в моем модуле http://forum.sources.ru/index.php?act=Attach&type=post&id=399308.

Автор: Mephisto 10.5.2005, 13:01
Петрович, спасибо. То что нужно!
Цитата
Или в моем модуле awString.

А можно это как-нить тут выложить, у меня нет доступа? Хотел бы посмотреть твой вариант!

Автор: Петрович 11.5.2005, 03:44
Конечно можно.
Собственно давно пора smile
Возьми http://asysoev.nm.ru/awLib/awString.zip
см. функции из раздела "Функции кодирования 3 в 4 и обратно"

Автор: Akina 11.5.2005, 08:53
Цитата
Я же писал. Есть. Например Base64,UUE,XXE,MIME.

Неправ ты.
Есть 7-битные кодировки. В них стандартных алгоритмов перевода нет. Но есть стандартные процедуры конвертации в printable text - это как раз все твои алгоритмы.

Автор: Петрович 11.5.2005, 17:53
Цитата(Akina @ 11.5.2005, 09:53)
Есть 7-битные кодировки. В них стандартных алгоритмов перевода нет. Но есть стандартные процедуры конвертации в printable text - это как раз все твои алгоритмы.

В таком случае, наши разногласия вызваны несогласованностью терминалогии.
Насколько я понял, Mephisto интересовали именно "процедуры конвертации в printable text".
Я считал что речь идет именно о кодировках позволяющих передавать бинарную информацию без использования восьмого бита в байте. Такое раньше широко исполоьзовалось по причине существования семибитных каналов связи. Восьмой бит байта использовался для контроля четности, а некоторые младшие коды (< пробела) использовались как управляющие символы (XON, XOFF, SYN, EOL, EOT, и т.п.). Поэтому, такие кодировки использовали только печатные символы. Сейчас такие каналы это редкость. Поэтому, такие преобразования сейчас обычно используются для "конвертации в printable text" (побочный эффект smile).
Хоть это уже и не в тему, но мне интересно, что ты имеешь ввиду под понятием "7-битные кодировки"?

Автор: Akina 11.5.2005, 18:04
Цитата
что ты имеешь ввиду под понятием "7-битные кодировки"?

Скажем, KOI-7 smile

Автор: Mephisto 14.5.2005, 00:03
Цитата
Хоть это уже и не в тему, но мне интересно, что ты имеешь ввиду под понятием "7-битные кодировки"?

Может я и не корректно выразился!!!???
Проблема вот в чём: Есть один девайсик на авто, который при определенном запросе выдает мне в порт один массивчик. Только у этого гада, как бы сказать, один байт это 7 бит а не 8.
Оригинальную прогу с коннектором впадло покупать. Кучу денег стоит, да и заказывать в штатах надо. Мы с дружбаном за вечер коннектор спаяли, а с прогой нае.....сь! Вот и спрашиваю есть ли алгоритмы пошустрей? В данном моменте важна высокая скорость!

Автор: Akina 14.5.2005, 08:30
В какой порт? СОМ? тогда просто инить СОМ-порт в 7-битный режим, и вся недолга...

Автор: Петрович 14.5.2005, 09:17
Цитата(Akina @ 11.5.2005, 09:53)
Есть 7-битные кодировки. В них стандартных алгоритмов перевода нет.


Цитата(Akina @ 11.5.2005, 19:04)
Скажем, KOI-7

Странно. Всю жизнь считал что для KOI-7 есть таблица однозначной перекодировки из ANSI, ASCII, и пр. smile.

Цитата(Mephisto @ 14.5.2005, 01:03)
Проблема вот в чём: Есть один девайсик на авто, который при определенном запросе выдает мне в порт один массивчик. Только у этого гада, как бы сказать, один байт это 7 бит а не 8.

Дык я не понял. Это в смысле 7-битный RS-232? Тогда как сказал Akina.
Или тебе надо преобразовать сам "массивчик" во что-то осмысленное? Тогда тебе надо знать его структуру, кодировку и пр.
Но, боюсь, преобразования 3->4 (Base64,UUE,XXE,MIME) тебе ни к чему.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)